Zwykle lepiej unikać niepożądanych rzeczy w stanie docelowym, zamiast usuwać je później. Sposób, w jaki formułujesz problem dowodowy, wpływa na sposób jego rozwiązania.
Jest to szczególnie ważne w przypadku dowodów strukturyzowanych: odwołać pozytywnie do tych faktów, które powinny uczestniczyć w następnym kroku dowodu, zamiast tłumienia niektóre z nich negatywnie.
E.g. tak:
from `A` and `C` have D ...
Opowiadanie, które fakty są istotne dla dowodu, jest już początkiem czytelności.
następstwie tego stylu, początkowy problem będzie wyglądać następująco:
lemma
assumes A and B and C
shows D
proof -
from `A` and `C` show D sorry
qed
lub jak to z ograniczonej gadatliwości, jeśli ABCD są duże propozycje:
lemma
assumes a: A and b: B and c: C
shows D
proof -
from a c show ?thesis sorry
qed
Oto realistyczny przykład, który pokazuje, co dzieje się, gdy cały czas używasz 'thin_tac': http://afp.sourceforge.net/entries/Group-Ring-Module.shtml – Makarius
Zauważ, że możesz również użyć wzorca wewnątrz' thin_tac': na przykład 'apply (thin_tac "? x ∧? y") "odrzuciłoby przesłankę' (1 + 1 = 2) ∧ (2 + 2 = 4) '. Może to pomóc w zmniejszeniu liczby pisania/duplikowania w skryptach sprawdzających. – davidg