All pastes #273365 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-09 21:08 UTC
rendered paste body
Inductive term : Set :=
  | True : term
  | False : term
  | If : term -> term -> term -> term.

Inductive evalR : term -> term -> Prop := 
  | EIfTrue  : forall (t2 t3 : term), evalR (If True t2 t3) t2
  | EIfFalse : forall (t2 t3 : term), evalR (If False t2 t3) t3
  | EIf      : forall (t1 t1' t2 t3 : term), evalR t1 t1' -> evalR (If t1 t2 t3) (If t1' t2 t3).

Theorem eval_determinacy :
  forall t t' t'' : term, evalR t t' -> evalR t t'' -> t' = t''.
Proof.
intros t t' t'' t'deriv.
elim t'deriv.
intros t2 t3 t4.
inversion t4.
trivial.
inversion H3.
intros t2 t3 t4.
inversion t4.
trivial.
inversion H3.
intros t1 t1' t2 t3.
intros.