Quando uso apply (rule)
in uno script di applicazione, in genere è selezionata una regola appropriata. Lo stesso vale per proof
in prove strutturate. Dove posso imparare/cercare il nome della regola che è stata utilizzata?Quale regola usa "regola" o "prova"?
risposta
Puoi provare a utilizzare rule_trace
come segue:
lemma "a ∧ b"
using [[rule_trace]]
apply rule
che visualizzerà nell'output:
rules:
?P ⟹ ?Q ⟹ ?P ∧ ?Q
?P ⟹ ?Q ⟹ ?P ∧ ?Q
proof (prove): step 2
goal (2 subgoals):
1. a
2. b
Se i nomi delle regole sono necessari, è quindi possibile provare a utilizzare find_theorems
; Non sono sicuro che possano essere determinati direttamente.
Tutto ciò che viene dichiarato come Pure.intro
/intro
/iff
(o uno dei suoi ?
o !
varianti) è considerato come regola di introduzione di default (vale a dire, se non sono emersi fatti attuali sono incatenati a). Allo stesso modo, tutto ciò che viene dichiarato come Pure.elim
/elim
/iff
viene considerato come regola di eliminazione predefinita (ad esempio, se i fatti attuali sono concatenati). Solitamente le dichiarazioni successive hanno la precedenza su quelle precedenti (almeno se viene utilizzato lo stesso tipo di dichiarazione ... la miscelazione, ad es. Pure.intro?
con intro
, ecc., Potrebbe risultare diversa).
Tuttavia, questo risponde solo al tipo di regole considerate in linea di principio. Non conosco un modo per scoprire direttamente quale regola è stata applicata. Ma è relativamente semplice trovare la regola corretta per find_theorems intro
direttamente sopra la linea che ti stavi chiedendo. Per esempio,
lemma "A & B"
find_theorems intro
proof
vi mostrerà tutte le regole che potrebbero essere applicati come regola di introduzione alla meta A & B
. Uno di questi è la regola predefinita applicata da proof
(lo riconoscerai dalle sotto-risposte che hai ottenuto).
Per le regole di eliminazione è possibile utilizzare, ad esempio,
lemma assumes "A | B" shows "P"
using assms
find_theorems elim
proof
Le altre risposte indicano già come determinare quali lemmi vengono applicati da rule
. Si noti che proof
non chiama lo rule
, ma il metodo default
. La maggior parte delle volte, default
fa la stessa cosa di rule
, ma ad es. per dimostrare un predicato locale chiama unfold_locales
.
Non conosco alcun metodo per vedere cosa succede realmente lì.
- 1. fare: regola chiamata regola
- 2. Quale regola desideri avere FxCop/Gendarme?
- 3. regola Makefile senza dipendenza espressione
- 4. Regola UIImage in UIImageView
- 5. In che modo una regola CSS sostituisce un'altra regola CSS?
- 6. Cross-Browser Regola CSS3
- 7. Regola Oracle Bankers
- 8. Regola dimensione carattere FPDF
- 9. SASS: regola diretta discendente?
- 10. Cos'è questa regola CSS?
- 11. Oggetto della regola CSS
- 12. regola mod_rewrite e setenv
- 13. Regola Larghezza colonna DBGrid
- 14. Regola alfa di UIColor
- 15. Personalizzazione regola OCLint
- 16. ANTLR regola priorità
- 17. Regola in OpenLayers 3
- 18. Quale sezione dello standard C89 consente la regola "implicito int"?
- 19. Priorità regola di reindirizzamento IIS
- 20. Eccezione alla regola del tre?
- 21. Regola target generica per Makefile
- 22. Esiste una regola di confronto utf8_unicode_cs?
- 23. Implementazione della regola RBAC Yii2
- 24. Drools: regola a tempo limitato
- 25. Regola larghezza cella in Excel
- 26. FluentValidazione regola per oggetto nullo
- 27. SASS/SCSS regola @extend selettori
- 28. Parametro per regola nel Makefile
- 29. L'immagine non si regola automaticamente
- 30. multipla .htaccess regola di riscrittura