open import 1Lab.Univalence.SIP open import 1Lab.Reflection open import 1Lab.Type.Sigma open import 1Lab.Univalence open import 1Lab.Equiv open import 1Lab.Path open import 1Lab.Type open import Data.List.Base module 1Lab.Univalence.SIP.Auto where makeAutoStr-term : Nat → Term → TC ⊤ makeAutoStr-term zero t = typeError (strErr "autoDesc ran out of fuel" ∷ []) makeAutoStr-term (suc n) t = tryPoint <|> tryBin (quote _s→_) <|> tryBin (quote _s×_) <|> useConst where tryPoint = do unify t (con (quote s∙) []) tryBin : Name → TC ⊤ tryBin namen = do h1 ← new-meta unknown h2 ← new-meta unknown tt ← unify (con namen (h1 v∷ h2 v∷ [])) t tt ← makeAutoStr-term n h1 makeAutoStr-term n h2 useConst = do unify t (con (quote s-const) (unknown v∷ [])) macro auto-str-term : Term → TC ⊤ auto-str-term = makeAutoStr-term 100