@@ -10,7 +10,9 @@ module CertifierReport where
1010open import VerifiedCompilation
1111open import VerifiedCompilation.Certificate
1212open import VerifiedCompilation.UntypedTranslation
13+ open import VerifiedCompilation.UInline
1314open import Untyped
15+ open import Untyped.RenamingSubstitution using (Sub)
1416open import Utils as U using (List; _×_)
1517
1618open import Data.List as L using (List)
@@ -69,13 +71,45 @@ numSites′ = go 0
6971 goᵖʷ n Pointwise.[] = n
7072 goᵖʷ n (x Pointwise.∷ xs) = goᵖʷ (go n x) xs
7173
74+ numSitesInlineᵖʷ :
75+ {X : ℕ}
76+ {σ : Sub X X}
77+ {Ms Ns : L.List (X ⊢)}
78+ (p : Pointwise (Inline σ □) Ms Ns)
79+ → ℕ
80+
81+ numSitesInline :
82+ {X : ℕ}
83+ {σ : Sub X X}
84+ {z z′ : X ↝}
85+ {zz : z ≽ z′}
86+ {M M′ : X ⊢}
87+ (p : Inline σ zz M M′)
88+ → ℕ
89+ numSitesInline (` x) = 0
90+ numSitesInline (`↓ r) = numSitesInline r + 1
91+ numSitesInline (ƛ□ r) = numSitesInline r
92+ numSitesInline (ƛ r) = numSitesInline r
93+ numSitesInline (ƛ↓ r) = numSitesInline r
94+ numSitesInline (r · s) = numSitesInline r + numSitesInline s
95+ numSitesInline (r ·↓) = numSitesInline r
96+ numSitesInline (force r) = numSitesInline r
97+ numSitesInline (delay r) = numSitesInline r
98+ numSitesInline con = 0
99+ numSitesInline builtin = 0
100+ numSitesInline error = 0
101+ numSitesInline (constr rs) = numSitesInlineᵖʷ rs
102+ numSitesInline (case r rs) = numSitesInline r + numSitesInlineᵖʷ rs
103+
104+ numSitesInlineᵖʷ Pointwise.[] = 0
105+ numSitesInlineᵖʷ (x Pointwise.∷ xs) = numSitesInline x + numSitesInlineᵖʷ xs
106+
72107numSites : {X : ℕ} {tag : SimplifierTag} {M N : X ⊢} → Transformation tag M N → Maybe ℕ
73108numSites (isFD p) = just (numSites′ p)
74109numSites (isFlD p) = just (numSites′ p)
75110numSites (isCSE p) = just (numSites′ p)
76111numSites (isCaseReduce p) = just (numSites′ p)
77- -- FIXME: count number of optimization sites for inlining
78- numSites (isInline _) = nothing
112+ numSites (isInline p) = just (numSitesInline p)
79113numSites forceCaseDelayNotImplemented = nothing
80114numSites cocNotImplemented = nothing
81115numSites applyToCaseNotImplemented = nothing
0 commit comments