@@ -304,23 +304,17 @@ theorem RFindAbove_correct (fNat : Nat → Nat) (f x : SKI)
304304 induction n generalizing m x
305305 all_goals apply isChurch_trans (a' := RFindAboveAux ⬝ RFindAbove ⬝ x ⬝ f)
306306 case zero.a =>
307- apply isChurch_trans (a' := x)
308- · have : IsChurch (fNat m) (f ⬝ x) := hf m x hx
309- rw [Nat.add_zero] at hroot
310- simp_rw [hroot] at this
311- apply rfindAboveAux_base
312- assumption
313- · assumption
307+ apply isChurch_trans (a' := x) <;>
308+ grind [rfindAboveAux_base]
314309 case succ.a n ih =>
315- unfold RFindAbove
316310 apply isChurch_trans (a' := RFindAbove ⬝ (SKI.Succ ⬝ x) ⬝ f)
317311 · let y := (fNat m).pred
318- have : IsChurch (y+ 1 ) (f ⬝ x) := by
312+ have : IsChurch (y + 1 ) (f ⬝ x) := by
319313 subst y
320314 exact Nat.succ_pred_eq_of_ne_zero (hpos 0 (by simp)) ▸ hf m x hx
321315 apply rfindAboveAux_step
322316 assumption
323- · replace ih := ih (SKI.Succ ⬝ x) (m+ 1 ) (succ_correct _ x hx)
317+ · replace ih := ih (SKI.Succ ⬝ x) (m + 1 ) (succ_correct _ x hx)
324318 grind
325319 -- close the `h` goals of the above `apply isChurch_trans`
326320 all_goals {apply MRed.head; apply MRed.head; exact fixedPoint_correct _}
@@ -347,8 +341,8 @@ theorem add_def (a b : SKI) : (SKI.Add ⬝ a ⬝ b) ↠ a ⬝ SKI.Succ ⬝ b :=
347341 AddPoly.toSKI_correct [a, b] (by simp)
348342
349343theorem add_correct (n m : Nat) (a b : SKI) (ha : IsChurch n a) (hb : IsChurch m b) :
350- IsChurch (n+ m) (SKI.Add ⬝ a ⬝ b) := by
351- refine isChurch_trans (n+ m) (a' := Church n SKI.Succ b) ?_ ?_
344+ IsChurch (n + m) (SKI.Add ⬝ a ⬝ b) := by
345+ refine isChurch_trans (n + m) (a' := Church n SKI.Succ b) ?_ ?_
352346 · calc
353347 _ ↠ a ⬝ SKI.Succ ⬝ b := add_def a b
354348 _ ↠ Church n SKI.Succ b := ha SKI.Succ b
@@ -367,15 +361,15 @@ theorem mul_def (a b : SKI) : (SKI.Mul ⬝ a ⬝ b) ↠ a ⬝ (SKI.Add ⬝ b)
367361 MulPoly.toSKI_correct [a, b] (by simp)
368362
369363theorem mul_correct {n m : Nat} {a b : SKI} (ha : IsChurch n a) (hb : IsChurch m b) :
370- IsChurch (n* m) (SKI.Mul ⬝ a ⬝ b) := by
371- refine isChurch_trans (n* m) (a' := Church n (SKI.Add ⬝ b) SKI.Zero) ?_ ?_
364+ IsChurch (n * m) (SKI.Mul ⬝ a ⬝ b) := by
365+ refine isChurch_trans (n * m) (a' := Church n (SKI.Add ⬝ b) SKI.Zero) ?_ ?_
372366 · exact Trans.trans (mul_def a b) (ha (SKI.Add ⬝ b) SKI.Zero)
373367 · clear ha
374368 induction n with
375369 | zero => simp_rw [Nat.zero_mul, Church]; exact zero_correct
376370 | succ n ih =>
377371 simp_rw [Nat.add_mul, Nat.one_mul, Nat.add_comm, Church]
378- exact add_correct m (n* m) b (Church n (SKI.Add ⬝ b) SKI.Zero) hb ih
372+ exact add_correct m (n * m) b (Church n (SKI.Add ⬝ b) SKI.Zero) hb ih
379373
380374/-- Subtraction: λ n m. n Pred m -/
381375def SubPoly : SKI.Polynomial 2 := &1 ⬝' Pred ⬝' &0
@@ -385,8 +379,8 @@ theorem sub_def (a b : SKI) : (SKI.Sub ⬝ a ⬝ b) ↠ b ⬝ Pred ⬝ a :=
385379 SubPoly.toSKI_correct [a, b] (by simp)
386380
387381theorem sub_correct (n m : Nat) (a b : SKI) (ha : IsChurch n a) (hb : IsChurch m b) :
388- IsChurch (n- m) (SKI.Sub ⬝ a ⬝ b) := by
389- refine isChurch_trans (n- m) (a' := Church m Pred a) ?_ ?_
382+ IsChurch (n - m) (SKI.Sub ⬝ a ⬝ b) := by
383+ refine isChurch_trans (n - m) (a' := Church m Pred a) ?_ ?_
390384 · calc
391385 _ ↠ b ⬝ Pred ⬝ a := sub_def a b
392386 _ ↠ Church m Pred a := hb Pred a
0 commit comments