-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
more results of terms having head normal forms (has_hnf
)
#1150
Conversation
(* cf. abs_grandbeta, added by Chun Tian *) | ||
(* |- !R x y z. R^+ x y /\ R^+ y z ==> R^+ x z *) | ||
Theorem TC_TRANS[local] = REWRITE_RULE [transitive_def] TC_TRANSITIVE | ||
|
||
Theorem abs_betastar : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could be an iff.
Induct_on ‘vs’ >> rw [] | ||
QED | ||
|
||
Theorem hnf_appstar : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you lift the Ns <> []
assumption out, I believe the statement could be an iff:
Ns <> [] ==> (hnf (M @* Ns) <=> hnf M /\ ~is_abs M)
@@ -106,6 +106,7 @@ val lameq_weaken_cong = store_thm( | |||
METIS_TAC [lameq_rules]); | |||
|
|||
Theorem lameq_SYM = List.nth(CONJUNCTS lameq_rules, 2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you use the labelling option in the Inductive definition of lameq
you should be able to get these for free:
...
[~SYM:]
(!M N. M == N ==> N == M) /\
[~TRANS:]
(!M N P. M == N /\ N == P ==> M == P) /\ ...
You will need to replace the call to xHol_reln
with Inductive lameq:
Thanks for your code review @mn200, I have made all the related changes (my first time using the modern syntax of |
If you could take a look at
I believe this theorem may be also improved as an iff: if |
Thanks for all this! I agree that your implication looks to definitely be an iff. Will look at it. |
See b1932f5 |
Hi,
This is a stage work proving more results of terms having head normal forms (
has_hnf
), independent with solvable terms. The end of the chain of proved theorems is the following theorems with[simp]
(Proposition 8.3.13 (i) of [1, p.174]):Now I have to use
chap3Theory
, i.e. using theorems about (beta) reductions (beta
andgrandbeta
) to prove results about beta conversions (lameq
). The following important lemmas are proved:P.S. With the above theorem "has_hnf_iff_LAM" and the following theorem (slightly renamed) added by previous PR #1148:
we are now ready to show
|- solvable M <=> has_hnf M
(a term is solvable iff has head normal forms) by first reducing all involved terms to closed terms (by closing the terms withLAM
s of free variables.), i.e.|- closed M ==> solvable M <=> has_hnf M
.[1] Barendregt, H.P.: The Lambda Calculus, Its Syntax and Semantics. College Publications, London (1984).