Library gaia_hydras.GL_alpha
Gaia-compatible L_ alpha fast growing functions
(imported from hydras.Epsilon0.Hprime )
From mathcomp Require Import all_ssreflect zify.
From gaia Require Export ssete9.
From Coq Require Import Logic.Eqdep_dec.
From hydras Require Import DecPreOrder.
From hydras Require Import T1 E0.
From hydras Require Paths L_alpha.
From hydras Require Import L_alpha.
From gaia_hydras Require Import T1Bridge GCanon GPaths GHprime.
Set Implicit Arguments.
Definition L_ (alpha:E0) (i:nat): nat :=
L_alpha.L_ (E0_g2h alpha) i.
Lemma L_zeroE i : L_ E0zero i = i.
Lemma L_eq2 alpha i :
E0is_succ alpha → L_ alpha i = L_ (E0_pred alpha) (S i).
Lemma L_succE alpha i : L_ (E0_succ alpha) i = L_ alpha i.+1.
Lemma L_limE alpha i :
E0limit alpha → L_ alpha i = L_ (E0Canon alpha i) (S i).
Lemma L_finite : ∀ i k :nat, L_ (E0fin i) k = (i+k)%nat.
Lemma L_omega : ∀ k, L_ E0_omega k = S (2 × k)%nat.
Lemma L_ge_id alpha : ∀ i, (i ≤ L_ alpha i)%N.
Lemma L_ge_S alpha i:
alpha ≠ E0zero → (i < L_ alpha i)%N.
Definition L_spec (alpha:T1) (f: nat → nat):=
Large_Sets.L_spec (g2h alpha) f.
Lemma L_spec0 (f:nat → nat) : L_spec zero f ↔ ∀ k, f k.+1 = k.+1.
Lemma L_spec1 (a:T1) (f:nat → nat) :
a != zero →
L_spec a f ↔
(∀ k,
Large_Sets.mlarge (g2h a)
( MoreLists.interval (S k)
(Nat.pred (f (S k))))) .
Lemma L_pos_inv a f :
a != zero → L_spec a f →
∀ k, (S k < f (S k))%N.
Theorem L_correct a : L_spec (cnf a) (L_ a).
Theorem H'_L_ a i: (H'_ a i ≤ L_ a i.+1)%N.