From babfb9c72c3b0e6fec47e0eaa733e2530e08190b Mon Sep 17 00:00:00 2001 From: owo-bot Date: Thu, 3 Oct 2024 01:23:37 +0000 Subject: [PATCH] GitHub Actions Automated Deploy --- 404.html | 24 ++++ CNAME | 1 + assets/app.CEkJpW4F.js | 1 + assets/blog_binops.md.BnuGOt04.js | 12 ++ assets/blog_binops.md.BnuGOt04.lean.js | 12 ++ assets/blog_bye-hott.md.NGE4GKmU.js | 1 + assets/blog_bye-hott.md.NGE4GKmU.lean.js | 1 + assets/blog_class-defeq.md.XvEV7HU1.js | 12 ++ assets/blog_class-defeq.md.XvEV7HU1.lean.js | 12 ++ assets/blog_extended-pruning.md.CuhyEVbT.js | 51 +++++++ .../blog_extended-pruning.md.CuhyEVbT.lean.js | 51 +++++++ assets/blog_ind-prop.md.BgOiB5U1.js | 18 +++ assets/blog_ind-prop.md.BgOiB5U1.lean.js | 18 +++ assets/blog_index-unification.md.DR8rUZJu.js | 7 + ...blog_index-unification.md.DR8rUZJu.lean.js | 7 + assets/blog_index.md.DR7jCmfM.js | 1 + assets/blog_index.md.DR7jCmfM.lean.js | 1 + assets/blog_lang-exts.md.hyGXHWfR.js | 1 + assets/blog_lang-exts.md.hyGXHWfR.lean.js | 1 + assets/blog_path-elab.md.DXdo4WbU.js | 21 +++ assets/blog_path-elab.md.DXdo4WbU.lean.js | 21 +++ assets/blog_pathcon-elab.md.CriMvQIQ.js | 10 ++ assets/blog_pathcon-elab.md.CriMvQIQ.lean.js | 10 ++ assets/blog_redirect.md.Ch6PGAGu.js | 1 + assets/blog_redirect.md.Ch6PGAGu.lean.js | 1 + assets/blog_tt-in-tt-qiit.md.BjrgqciZ.js | 67 ++++++++++ assets/blog_tt-in-tt-qiit.md.BjrgqciZ.lean.js | 67 ++++++++++ .../chunks/@localSearchIndexroot.DpLJ-EhC.js | 1 + assets/chunks/VPLocalSearchBox.BipGruSN.js | 7 + assets/chunks/framework.BnE-uSbk.js | 18 +++ assets/chunks/theme.DeEHWU5r.js | 2 + assets/guide_fake-literate.md.5HoY67ds.js | 45 +++++++ .../guide_fake-literate.md.5HoY67ds.lean.js | 45 +++++++ .../guide_haskeller-tutorial.md.GKsyNqV0.js | 75 +++++++++++ ...ide_haskeller-tutorial.md.GKsyNqV0.lean.js | 75 +++++++++++ assets/guide_index.md.Bb5oyrEG.js | 1 + assets/guide_index.md.Bb5oyrEG.lean.js | 1 + assets/guide_install.md.Cs_zw_W1.js | 26 ++++ assets/guide_install.md.Cs_zw_W1.lean.js | 26 ++++ assets/guide_project-tutorial.md.CaWZTWm8.js | 17 +++ ...guide_project-tutorial.md.CaWZTWm8.lean.js | 17 +++ assets/guide_prover-tutorial.md.C3VZY-zt.js | 98 ++++++++++++++ .../guide_prover-tutorial.md.C3VZY-zt.lean.js | 98 ++++++++++++++ assets/guide_readings.md.DU4j-4Ox.js | 1 + assets/guide_readings.md.DU4j-4Ox.lean.js | 1 + assets/guide_vscode-tutorial.md.Bwg1aD-U.js | 1 + .../guide_vscode-tutorial.md.Bwg1aD-U.lean.js | 1 + assets/index.md.ukG0WVuo.js | 1 + assets/index.md.ukG0WVuo.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes assets/inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes assets/inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes assets/inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes assets/inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes assets/inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes assets/inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes assets/inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes assets/inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes assets/pubs_index.md.DjeH4wTt.js | 1 + assets/pubs_index.md.DjeH4wTt.lean.js | 1 + assets/style.CZ1NuL7E.css | 1 + blog/binops.html | 38 ++++++ blog/bye-hott.html | 27 ++++ blog/class-defeq.html | 38 ++++++ blog/extended-pruning.html | 77 +++++++++++ blog/ind-prop.html | 44 +++++++ blog/index-unification.html | 33 +++++ blog/index.html | 27 ++++ blog/lang-exts.html | 27 ++++ blog/path-elab.html | 47 +++++++ blog/pathcon-elab.html | 36 +++++ blog/redirect.html | 27 ++++ blog/tt-in-tt-qiit.html | 93 +++++++++++++ guide/fake-literate.html | 71 ++++++++++ guide/haskeller-tutorial.html | 101 ++++++++++++++ guide/index.html | 27 ++++ guide/install.html | 52 ++++++++ guide/project-tutorial.html | 43 ++++++ guide/prover-tutorial.html | 124 ++++++++++++++++++ guide/readings.html | 27 ++++ guide/vscode-tutorial.html | 27 ++++ hashmap.json | 1 + header.jpg | Bin 0 -> 625784 bytes index.html | 27 ++++ logo.svg | 1 + pubs/index.html | 27 ++++ 91 files changed, 2033 insertions(+) create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/app.CEkJpW4F.js create mode 100644 assets/blog_binops.md.BnuGOt04.js create mode 100644 assets/blog_binops.md.BnuGOt04.lean.js create mode 100644 assets/blog_bye-hott.md.NGE4GKmU.js create mode 100644 assets/blog_bye-hott.md.NGE4GKmU.lean.js create mode 100644 assets/blog_class-defeq.md.XvEV7HU1.js create mode 100644 assets/blog_class-defeq.md.XvEV7HU1.lean.js create mode 100644 assets/blog_extended-pruning.md.CuhyEVbT.js create mode 100644 assets/blog_extended-pruning.md.CuhyEVbT.lean.js create mode 100644 assets/blog_ind-prop.md.BgOiB5U1.js create mode 100644 assets/blog_ind-prop.md.BgOiB5U1.lean.js create mode 100644 assets/blog_index-unification.md.DR8rUZJu.js create mode 100644 assets/blog_index-unification.md.DR8rUZJu.lean.js create mode 100644 assets/blog_index.md.DR7jCmfM.js create mode 100644 assets/blog_index.md.DR7jCmfM.lean.js create mode 100644 assets/blog_lang-exts.md.hyGXHWfR.js create mode 100644 assets/blog_lang-exts.md.hyGXHWfR.lean.js create mode 100644 assets/blog_path-elab.md.DXdo4WbU.js create mode 100644 assets/blog_path-elab.md.DXdo4WbU.lean.js create mode 100644 assets/blog_pathcon-elab.md.CriMvQIQ.js create mode 100644 assets/blog_pathcon-elab.md.CriMvQIQ.lean.js create mode 100644 assets/blog_redirect.md.Ch6PGAGu.js create mode 100644 assets/blog_redirect.md.Ch6PGAGu.lean.js create mode 100644 assets/blog_tt-in-tt-qiit.md.BjrgqciZ.js create mode 100644 assets/blog_tt-in-tt-qiit.md.BjrgqciZ.lean.js create mode 100644 assets/chunks/@localSearchIndexroot.DpLJ-EhC.js create mode 100644 assets/chunks/VPLocalSearchBox.BipGruSN.js create mode 100644 assets/chunks/framework.BnE-uSbk.js create mode 100644 assets/chunks/theme.DeEHWU5r.js create mode 100644 assets/guide_fake-literate.md.5HoY67ds.js create mode 100644 assets/guide_fake-literate.md.5HoY67ds.lean.js create mode 100644 assets/guide_haskeller-tutorial.md.GKsyNqV0.js create mode 100644 assets/guide_haskeller-tutorial.md.GKsyNqV0.lean.js create mode 100644 assets/guide_index.md.Bb5oyrEG.js create mode 100644 assets/guide_index.md.Bb5oyrEG.lean.js create mode 100644 assets/guide_install.md.Cs_zw_W1.js create mode 100644 assets/guide_install.md.Cs_zw_W1.lean.js create mode 100644 assets/guide_project-tutorial.md.CaWZTWm8.js create mode 100644 assets/guide_project-tutorial.md.CaWZTWm8.lean.js create mode 100644 assets/guide_prover-tutorial.md.C3VZY-zt.js create mode 100644 assets/guide_prover-tutorial.md.C3VZY-zt.lean.js create mode 100644 assets/guide_readings.md.DU4j-4Ox.js create mode 100644 assets/guide_readings.md.DU4j-4Ox.lean.js create mode 100644 assets/guide_vscode-tutorial.md.Bwg1aD-U.js create mode 100644 assets/guide_vscode-tutorial.md.Bwg1aD-U.lean.js create mode 100644 assets/index.md.ukG0WVuo.js create mode 100644 assets/index.md.ukG0WVuo.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 assets/pubs_index.md.DjeH4wTt.js create mode 100644 assets/pubs_index.md.DjeH4wTt.lean.js create mode 100644 assets/style.CZ1NuL7E.css create mode 100644 blog/binops.html create mode 100644 blog/bye-hott.html create mode 100644 blog/class-defeq.html create mode 100644 blog/extended-pruning.html create mode 100644 blog/ind-prop.html create mode 100644 blog/index-unification.html create mode 100644 blog/index.html create mode 100644 blog/lang-exts.html create mode 100644 blog/path-elab.html create mode 100644 blog/pathcon-elab.html create mode 100644 blog/redirect.html create mode 100644 blog/tt-in-tt-qiit.html create mode 100644 guide/fake-literate.html create mode 100644 guide/haskeller-tutorial.html create mode 100644 guide/index.html create mode 100644 guide/install.html create mode 100644 guide/project-tutorial.html create mode 100644 guide/prover-tutorial.html create mode 100644 guide/readings.html create mode 100644 guide/vscode-tutorial.html create mode 100644 hashmap.json create mode 100644 header.jpg create mode 100644 index.html create mode 100644 logo.svg create mode 100644 pubs/index.html diff --git a/404.html b/404.html new file mode 100644 index 0000000..40b57de --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + + + + + 404 | Aya Prover + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..17a0123 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.aya-prover.org diff --git a/assets/app.CEkJpW4F.js b/assets/app.CEkJpW4F.js new file mode 100644 index 0000000..78d986d --- /dev/null +++ b/assets/app.CEkJpW4F.js @@ -0,0 +1 @@ +import{R as i}from"./chunks/theme.DeEHWU5r.js";import{R as o,a4 as u,a5 as c,a6 as l,a7 as f,a8 as d,a9 as m,aa as h,ab as g,ac as A,ad as v,d as P,u as R,v as w,s as y,ae as C,af as b,ag as E,a3 as S}from"./chunks/framework.BnE-uSbk.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=p(i),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/blog_binops.md.BnuGOt04.js b/assets/blog_binops.md.BnuGOt04.js new file mode 100644 index 0000000..7641d3c --- /dev/null +++ b/assets/blog_binops.md.BnuGOt04.js @@ -0,0 +1,12 @@ +import{_ as a,c as t,a2 as n,o as s}from"./chunks/framework.BnE-uSbk.js";const m=JSON.parse('{"title":"Binary operators in Aya","description":"","frontmatter":{},"headers":[],"relativePath":"blog/binops.md","filePath":"blog/binops.md","lastUpdated":1717413547000}'),i={name:"blog/binops.md"};function o(r,e,p,c,l,d){return s(),t("div",null,e[0]||(e[0]=[n(`

Binary operators in Aya

We have designed a binary operator system in Aya which happens to be (we didn't copy!) very similar to Rhombus (a.k.a. Racket 2) and Swift 5.7.

TL;DR: it supports making any identifier a custom operator with precedences specified by a partial ordering. Left and right associativities are supported.

The precedence and associativity information is bound to a name, not a definition. This means we can import a name from another module with changes to its name, associativity, and precedence. Importing with renaming is an established feature, but changing associativity and precedence is not that popular (though implemented in Agda already).

Here are some code examples (implementations are omitted for simplicity):

-- Left-associative
+def infixl + (x y : Nat) : Nat => {??}
+-- Left-associative, bind tighter than +
+def infixl * (x y : Nat) : Nat => {??} tighter +
+-- Prefix operator
+def fixl ! (x : Nat) : Nat => {??}
+-- Postfix operator
+def fixr ? (x : Nat) : Nat => {??}

The tighter keyword works like this: when there are expressions like a * b + c which may either mean (a * b) + c or a * (b + c), we will put the tighter operator in the parenthesis. In case we found the two operators share the same priority, Aya will report an error.

With imports, it looks like this:

open import Primitives using (
+  invol       as fixl  ~  tighter =, \\/, /\\,
+  intervalMin as infix /\\ tighter \\/,
+  intervalMax as infix \\/,
+)

Specifying operator precedences with a partial ordering is way better than with a number. In Haskell, if we already have infix 3 + and infix 4 * and we hope to add a new operator which has higher precedence than + but lower than *, it's going to be impossible. Agda introduced float-point precedence levels to address the issue, but I think it does not solve the essential problem: that I have to lookup the numbers (of existing operator precedences) every time I write a new operator.

In the future, we plan to support mixfix operators as in Agda (the current framework can support mixfix easily, but abusing mixfix notations can harm readability).

`,11)]))}const f=a(i,[["render",o]]);export{m as __pageData,f as default}; diff --git a/assets/blog_binops.md.BnuGOt04.lean.js b/assets/blog_binops.md.BnuGOt04.lean.js new file mode 100644 index 0000000..7641d3c --- /dev/null +++ b/assets/blog_binops.md.BnuGOt04.lean.js @@ -0,0 +1,12 @@ +import{_ as a,c as t,a2 as n,o as s}from"./chunks/framework.BnE-uSbk.js";const m=JSON.parse('{"title":"Binary operators in Aya","description":"","frontmatter":{},"headers":[],"relativePath":"blog/binops.md","filePath":"blog/binops.md","lastUpdated":1717413547000}'),i={name:"blog/binops.md"};function o(r,e,p,c,l,d){return s(),t("div",null,e[0]||(e[0]=[n(`

Binary operators in Aya

We have designed a binary operator system in Aya which happens to be (we didn't copy!) very similar to Rhombus (a.k.a. Racket 2) and Swift 5.7.

TL;DR: it supports making any identifier a custom operator with precedences specified by a partial ordering. Left and right associativities are supported.

The precedence and associativity information is bound to a name, not a definition. This means we can import a name from another module with changes to its name, associativity, and precedence. Importing with renaming is an established feature, but changing associativity and precedence is not that popular (though implemented in Agda already).

Here are some code examples (implementations are omitted for simplicity):

-- Left-associative
+def infixl + (x y : Nat) : Nat => {??}
+-- Left-associative, bind tighter than +
+def infixl * (x y : Nat) : Nat => {??} tighter +
+-- Prefix operator
+def fixl ! (x : Nat) : Nat => {??}
+-- Postfix operator
+def fixr ? (x : Nat) : Nat => {??}

The tighter keyword works like this: when there are expressions like a * b + c which may either mean (a * b) + c or a * (b + c), we will put the tighter operator in the parenthesis. In case we found the two operators share the same priority, Aya will report an error.

With imports, it looks like this:

open import Primitives using (
+  invol       as fixl  ~  tighter =, \\/, /\\,
+  intervalMin as infix /\\ tighter \\/,
+  intervalMax as infix \\/,
+)

Specifying operator precedences with a partial ordering is way better than with a number. In Haskell, if we already have infix 3 + and infix 4 * and we hope to add a new operator which has higher precedence than + but lower than *, it's going to be impossible. Agda introduced float-point precedence levels to address the issue, but I think it does not solve the essential problem: that I have to lookup the numbers (of existing operator precedences) every time I write a new operator.

In the future, we plan to support mixfix operators as in Agda (the current framework can support mixfix easily, but abusing mixfix notations can harm readability).

`,11)]))}const f=a(i,[["render",o]]);export{m as __pageData,f as default}; diff --git a/assets/blog_bye-hott.md.NGE4GKmU.js b/assets/blog_bye-hott.md.NGE4GKmU.js new file mode 100644 index 0000000..2c522e7 --- /dev/null +++ b/assets/blog_bye-hott.md.NGE4GKmU.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.BnE-uSbk.js";const d=JSON.parse('{"title":"Moving away from univalent type theory","description":"","frontmatter":{},"headers":[],"relativePath":"blog/bye-hott.md","filePath":"blog/bye-hott.md","lastUpdated":1710300019000}'),n={name:"blog/bye-hott.md"};function s(r,e,l,p,c,h){return o(),a("div",null,e[0]||(e[0]=[i('

Moving away from univalent type theory

Aya is now moving away from univalent type theory.

Note that this does not mean we are moving away from cubical type theory -- we are trying to adapt an extensional version cubical type theory, called XTT, which is a cubical approach towards observational equality (the idea is due to Altenkirch and McBride): the equality type a =_A b is no longer defined uniformly for all types A, but rather defined by assuming a closed (inductive-recursive) universe, and defining a type family (A : Type) -> A -> A -> Type by casing on what A is. For function types, we can define it as pointwise equality, which makes function extensionality true by definition.

In case of cubical, this is automatic, due to how path types are defined.

The reference for XTT can be found in the paper A Cubical Language for Bishop Sets by Sterling, Angiuli, and Gratzer. This paper has a previous version which has a universe hierarchy, called Cubical Syntax for Reflection-Free Extensional Equality, by the same authors.

We plan to use XTT as the basis for Aya's type theory. We will change the following in v0.30 Aya:

  1. We will implement a universe à la Tarski to reuse the type checking of subtypes and paths.
  2. The impredicative Prop universe will be removed due to the complications it caused.
  3. The binding representation will be changed to locally nameless. By that we can make closed term completely serializable.
  4. We will try to implement definition-level controlling unfolding. This has a several advantages: the type checking order of bodies can be inferred from the annotations, and we can detect more cycles instead of reporting errors due to not being able to unfold unchecked function.
  5. We wish to remove implicitness information from core terms, and keep them a feature related to function calls. Π\\Pi-types should not know the name of the parameter, which is natural due to α\\alpha-equality. This means named arguments will only work for direct function calls.

Yes, the last two items indicate a major change in the implementation of Aya, which is essentially a rewrite of the type checker. We took this chance to revisit a couple of old issues and fix them. Currently, we have suceeded in extracting a Java module for the syntax definition from the type checker module, which will benefit third-party libraries who want to deal with serialized Aya terms.

We will not adapt the following features from XTT:

  1. Partial elements are first-class citizens, i.e. they have manifest "cubical" phases. Instead we will have first class total elements and use a Partial type to represent partial elements.
  2. Intervals are not types. We will adapt the 2LTT-style solution from Cubical Agda, which has some universes to classify exo-types.
  3. The type-case operator will remain internal to the type checker. While this might be useful in the future development related to metaprogramming, we do not see any immediate use for it except for implementing the computation of generalized coercion.
  4. As we already said, we do not intend to add an impredicative Prop universe, while the XTT paper said they intend to add it. We encourage the users to embrace the axiom of propositional resizing, which makes not just Props to be impredicative, but also all h-props (e.g. types that are provably props) to be impredicative.

The development is still in a private work-in-progress repository, which we will open-source and be ported to the main repo once we can compile this website with the new type checker, which implies complete support for inductive types except for the positivity checker.

We will also have to rewrite some guides about higher inductive types, and instead use some quotient type examples.

From that, we will start considering support for classes with extensions, and try to formalize some mathematics and do some real-world programming with Aya, partially bootstrapping the type checker.

Stay tuned!

',14)]))}const u=t(n,[["render",s]]);export{d as __pageData,u as default}; diff --git a/assets/blog_bye-hott.md.NGE4GKmU.lean.js b/assets/blog_bye-hott.md.NGE4GKmU.lean.js new file mode 100644 index 0000000..2c522e7 --- /dev/null +++ b/assets/blog_bye-hott.md.NGE4GKmU.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,a2 as i,o}from"./chunks/framework.BnE-uSbk.js";const d=JSON.parse('{"title":"Moving away from univalent type theory","description":"","frontmatter":{},"headers":[],"relativePath":"blog/bye-hott.md","filePath":"blog/bye-hott.md","lastUpdated":1710300019000}'),n={name:"blog/bye-hott.md"};function s(r,e,l,p,c,h){return o(),a("div",null,e[0]||(e[0]=[i('

Moving away from univalent type theory

Aya is now moving away from univalent type theory.

Note that this does not mean we are moving away from cubical type theory -- we are trying to adapt an extensional version cubical type theory, called XTT, which is a cubical approach towards observational equality (the idea is due to Altenkirch and McBride): the equality type a =_A b is no longer defined uniformly for all types A, but rather defined by assuming a closed (inductive-recursive) universe, and defining a type family (A : Type) -> A -> A -> Type by casing on what A is. For function types, we can define it as pointwise equality, which makes function extensionality true by definition.

In case of cubical, this is automatic, due to how path types are defined.

The reference for XTT can be found in the paper A Cubical Language for Bishop Sets by Sterling, Angiuli, and Gratzer. This paper has a previous version which has a universe hierarchy, called Cubical Syntax for Reflection-Free Extensional Equality, by the same authors.

We plan to use XTT as the basis for Aya's type theory. We will change the following in v0.30 Aya:

  1. We will implement a universe à la Tarski to reuse the type checking of subtypes and paths.
  2. The impredicative Prop universe will be removed due to the complications it caused.
  3. The binding representation will be changed to locally nameless. By that we can make closed term completely serializable.
  4. We will try to implement definition-level controlling unfolding. This has a several advantages: the type checking order of bodies can be inferred from the annotations, and we can detect more cycles instead of reporting errors due to not being able to unfold unchecked function.
  5. We wish to remove implicitness information from core terms, and keep them a feature related to function calls. Π\\Pi-types should not know the name of the parameter, which is natural due to α\\alpha-equality. This means named arguments will only work for direct function calls.

Yes, the last two items indicate a major change in the implementation of Aya, which is essentially a rewrite of the type checker. We took this chance to revisit a couple of old issues and fix them. Currently, we have suceeded in extracting a Java module for the syntax definition from the type checker module, which will benefit third-party libraries who want to deal with serialized Aya terms.

We will not adapt the following features from XTT:

  1. Partial elements are first-class citizens, i.e. they have manifest "cubical" phases. Instead we will have first class total elements and use a Partial type to represent partial elements.
  2. Intervals are not types. We will adapt the 2LTT-style solution from Cubical Agda, which has some universes to classify exo-types.
  3. The type-case operator will remain internal to the type checker. While this might be useful in the future development related to metaprogramming, we do not see any immediate use for it except for implementing the computation of generalized coercion.
  4. As we already said, we do not intend to add an impredicative Prop universe, while the XTT paper said they intend to add it. We encourage the users to embrace the axiom of propositional resizing, which makes not just Props to be impredicative, but also all h-props (e.g. types that are provably props) to be impredicative.

The development is still in a private work-in-progress repository, which we will open-source and be ported to the main repo once we can compile this website with the new type checker, which implies complete support for inductive types except for the positivity checker.

We will also have to rewrite some guides about higher inductive types, and instead use some quotient type examples.

From that, we will start considering support for classes with extensions, and try to formalize some mathematics and do some real-world programming with Aya, partially bootstrapping the type checker.

Stay tuned!

',14)]))}const u=t(n,[["render",s]]);export{d as __pageData,u as default}; diff --git a/assets/blog_class-defeq.md.XvEV7HU1.js b/assets/blog_class-defeq.md.XvEV7HU1.js new file mode 100644 index 0000000..48e6b44 --- /dev/null +++ b/assets/blog_class-defeq.md.XvEV7HU1.js @@ -0,0 +1,12 @@ +import{_ as s,c as e,a2 as t,o as n}from"./chunks/framework.BnE-uSbk.js";const h=JSON.parse('{"title":"Class extension with definitional projection","description":"","frontmatter":{},"headers":[],"relativePath":"blog/class-defeq.md","filePath":"blog/class-defeq.md","lastUpdated":1679761681000}'),o={name:"blog/class-defeq.md"};function i(p,a,l,c,r,m){return n(),e("div",null,a[0]||(a[0]=[t(`

Class extension with definitional projection

We want a class system with the following basic capabilities:

To add more flexibility to it, we want the following feature.

Anonymous extensions

Suppose we have a class Precat for precategories (written in pseudocode):

class Precat
+| Ob : Type
+| Hom : Ob -> Ob -> Type
+| Hom-set (A B : Ob) : isSet (Hom A B)
+| id (A : Ob) : Hom A A
+| ....

Suppose the syntax for creating an instance of a class is new Precat { Ob := .., Hom := .., ... }. I want the following:

This is called anonymous class extension, already implemented in the Arend language. As a syntactic sugar, we may write Precat { Ob := Group } as Precat Group, where the application is ordered the same as the fields in the class definition.

Definitional projection

We further want definitional projection:

This concludes the basic features of the class system. To implement this, it may seem that we need to have access to types in the normalizer, which makes it very heavy (in contrast to the lightweight normalizer you can have for plain MLTT).

Implementation

A uniform implementation of this definitional projection requires the definitional equality to commute with substitution, say, we may have

A:PrecatA.Ob:U{A : \\text{Precat} ⊢ A.\\text{Ob} : \\mathcal U}

This is a normal form. Then, we have Grp : Precat Group (so Grp.Ob is definitionally equal to Group), and we may perform the substitution [Grp/A][\\text{Grp} / \\text{A}] on the above normal form:

Grp:Precat GroupGrp.Ob:U\\text{Grp} : \\text{Precat}~\\text{Group} ⊢ \\text{Grp}.\\text{Ob} : \\mathcal U

We want the above to be equal to Group as well. Without access to contexts, it seems really hard!

Here's a trick: whenever we see A : Precat Group, we elaborate it into (the idea is similar to an η-expansion):

A ==> new Precat
+  { Ob := Group
+  , Hom := A.Hom
+  , Hom-set := A.Hom-set
+  , id := A.id
+  , ...
+  }

By that, we will never have A.Ob in the source language, because it always gets elaborated into Group directly. In case we partially know about A from the type, we really elaborate the type information right into the core term. So, we don't even have a chance to touch the bare A (not being projected) in the core language, and anything of a class type is always in an introduction form.

This should implement the definitional projection feature without even modifying the MLTT normalizer.

The idea of this feature comes from the treatment of extension types inspired from cooltt, see relevant post.

`,25)]))}const u=s(o,[["render",i]]);export{h as __pageData,u as default}; diff --git a/assets/blog_class-defeq.md.XvEV7HU1.lean.js b/assets/blog_class-defeq.md.XvEV7HU1.lean.js new file mode 100644 index 0000000..48e6b44 --- /dev/null +++ b/assets/blog_class-defeq.md.XvEV7HU1.lean.js @@ -0,0 +1,12 @@ +import{_ as s,c as e,a2 as t,o as n}from"./chunks/framework.BnE-uSbk.js";const h=JSON.parse('{"title":"Class extension with definitional projection","description":"","frontmatter":{},"headers":[],"relativePath":"blog/class-defeq.md","filePath":"blog/class-defeq.md","lastUpdated":1679761681000}'),o={name:"blog/class-defeq.md"};function i(p,a,l,c,r,m){return n(),e("div",null,a[0]||(a[0]=[t(`

Class extension with definitional projection

We want a class system with the following basic capabilities:

To add more flexibility to it, we want the following feature.

Anonymous extensions

Suppose we have a class Precat for precategories (written in pseudocode):

class Precat
+| Ob : Type
+| Hom : Ob -> Ob -> Type
+| Hom-set (A B : Ob) : isSet (Hom A B)
+| id (A : Ob) : Hom A A
+| ....

Suppose the syntax for creating an instance of a class is new Precat { Ob := .., Hom := .., ... }. I want the following:

This is called anonymous class extension, already implemented in the Arend language. As a syntactic sugar, we may write Precat { Ob := Group } as Precat Group, where the application is ordered the same as the fields in the class definition.

Definitional projection

We further want definitional projection:

This concludes the basic features of the class system. To implement this, it may seem that we need to have access to types in the normalizer, which makes it very heavy (in contrast to the lightweight normalizer you can have for plain MLTT).

Implementation

A uniform implementation of this definitional projection requires the definitional equality to commute with substitution, say, we may have

A:PrecatA.Ob:U{A : \\text{Precat} ⊢ A.\\text{Ob} : \\mathcal U}

This is a normal form. Then, we have Grp : Precat Group (so Grp.Ob is definitionally equal to Group), and we may perform the substitution [Grp/A][\\text{Grp} / \\text{A}] on the above normal form:

Grp:Precat GroupGrp.Ob:U\\text{Grp} : \\text{Precat}~\\text{Group} ⊢ \\text{Grp}.\\text{Ob} : \\mathcal U

We want the above to be equal to Group as well. Without access to contexts, it seems really hard!

Here's a trick: whenever we see A : Precat Group, we elaborate it into (the idea is similar to an η-expansion):

A ==> new Precat
+  { Ob := Group
+  , Hom := A.Hom
+  , Hom-set := A.Hom-set
+  , id := A.id
+  , ...
+  }

By that, we will never have A.Ob in the source language, because it always gets elaborated into Group directly. In case we partially know about A from the type, we really elaborate the type information right into the core term. So, we don't even have a chance to touch the bare A (not being projected) in the core language, and anything of a class type is always in an introduction form.

This should implement the definitional projection feature without even modifying the MLTT normalizer.

The idea of this feature comes from the treatment of extension types inspired from cooltt, see relevant post.

`,25)]))}const u=s(o,[["render",i]]);export{h as __pageData,u as default}; diff --git a/assets/blog_extended-pruning.md.CuhyEVbT.js b/assets/blog_extended-pruning.md.CuhyEVbT.js new file mode 100644 index 0000000..a757619 --- /dev/null +++ b/assets/blog_extended-pruning.md.CuhyEVbT.js @@ -0,0 +1,51 @@ +import{_ as z,c as w,j as s,a as e,a2 as V,o as _}from"./chunks/framework.BnE-uSbk.js";const C={mounted(){const h=new Map;function d(l){const a=l.querySelectorAll("a[href]");for(const n of a){const o=n.href,r=h.get(o)??new Set;r.add(n),h.set(o,r)}for(const n of a)n.onmouseover=function(){for(const o of h.get(this.href))o.classList.add("hover-highlight")},n.onmouseout=function(){for(const o of h.get(this.href))o.classList.remove("hover-highlight")}}function y(l){return decodeURIComponent(atob(l).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const f=(l=>{const a={};return(...n)=>{const o=JSON.stringify(n);return a[o]=a[o]||l(...n)}})(y);class m{constructor(){this.list=[]}dismiss(a){a&&(a.remove(),this.list=this.list.filter(n=>n!==a))}dismissIfNotUsed(a){a&&(a.markedForDismissal=!0,setTimeout(()=>{!a.userIsThinking&&this.allowAutoDismissal(a)&&this.dismiss(a)},1e3))}allowAutoDismissal(a){return a.markedForDismissal&&!a.userClicked}fireAutoDismissalFor(a){let n=this.list.find(o=>o.userCreatedFrom===a);this.dismissIfNotUsed(n)}createHoverFor(a,n,o){let r=this.list.find(i=>i.userCreatedFrom===a);if(r&&r.userClicked)return r;let b=[];const x=this.list.filter(i=>{if(this.allowAutoDismissal(i))return b.push(i),!1;const p=i.userCreatedFrom,u=a;let c=u;for(;c;){if(c===p)return!0;c=c.parentElement}for(c=p;c;){if(c===u)return!0;c=c.parentElement}return!1});b.forEach(i=>this.dismiss(i));let t=document.createElement("div");t.userCreatedFrom=a,t.innerHTML="×"+f(n),t.classList.add("AyaTooltipPopup"),d(t);let A=this;if(t.handleEvent=function(i){if(i.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let p=this.children[0];if(!p)return;let u=this;p.style.visibility="visible",p.addEventListener("click",c=>A.dismiss(u))}i.type==="mouseover"&&(this.userIsThinking=!0),i.type==="mouseout"&&(this.userIsThinking=!1,A.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),o.appendChild(t),t.style.left=`${a.offsetLeft}px`,x.length===0){const i=a.getBoundingClientRect(),p=t.getBoundingClientRect();i.bottom+p.height+30>window.innerHeight?t.style.top=`calc(${a.offsetTop-p.height+8}px - 3em)`:t.style.top=`${a.offsetTop+a.offsetHeight+8}px`}else{const i=Math.max(...x.map(p=>p.offsetTop+p.offsetHeight));t.style.top=`${i+8}px`}return this.list.push(t),t}}let v=new m;function g(l){return function(){let a=this;const n=a.getAttribute("data-tooltip-text");n&&(l?v.createHoverFor(a,n,document.body):v.fireAutoDismissalFor(a))}}d(document);{let l=document.getElementsByClassName("aya-tooltip");for(let a=0;aThis is the equality between two sized vectors: (xs ++ (ys ++ zs)) and ((xs ++ ys) ++ zs), the left hand side has type Vec (xs.size ++ (ys.size ++ zs.size)) A, and the right hand side has type Vec ((xs.size ++ ys.size) ++ zs.size).

So, the equality type is heterogeneous, and I introduce a type Vec (+-assoc i) A for it, where +-assoc is the associativity.

So this should type check, right? But pattern unification fails! I've left the two sides of +-assoc implicit, so I'm supposed to infer what numbers' associativity I care about, using pattern unification.

Then, pattern unification fails because the constraints are generated from cubical boundaries, where the "interval" variable is substituted to its sides. So, we have this type (the Path is called PathP in Agda):

Γ ­⊢ Path (fn i => Vec (+-assoc i) Nat) vecA vecB

Note the type of +-assoc is Fn (o p q : Nat) → ((o + p) + q) = (o + (p + q)).

So elaboration inserts metavariables:

Γ ­⊢ Path (fn i => Vec (+-assoc {?} {?} {?} i) Nat) vecA vecB

Where these metavariables have the following scope:

Γ , i : I ­⊢ ? : Nat

Note that the i : I binding is in-scope. So the metavariables with their spines added together becomes:

Γ ­⊢ Path (fn i => Vec (+-assoc {?a Γ i} {?b Γ i} {?c Γ i} i) Nat) vecA vecB

Then, we get the following tycking problems, according to the rules of Path:

vecA : Vec (+-assoc {?a Γ 0} {?b Γ 0} {?c Γ 0} 0) Nat
+vecB : Vec (+-assoc {?a Γ 1} {?b Γ 1} {?c Γ 1} 1) Nat

Look at the spines of all of these metavariables. None of them are in pattern fragment. So every equality constraint cannot be solved by pattern, because they're always equality after a substitution!

This can be solved by further extending your algorithm with pruning or a constraint system with a "lax" mode of solving metas when your equations rely essentially on non-pattern equations, but I feel it has defeated the point of finding the most general solution, which I used to believe to be the purpose of pattern unification....

Case Study

Right now Aya will try to prune these non-pattern arguments out and try to solve them. This obviously generates non-unique solutions, but I think it will be useful in practice.

In Agda, the following code is in the library:

++-assoc : ∀ {m n k} (xs : Vec A m) (ys : Vec A n) (zs : Vec A k) →
+          PathP (λ i → Vec A (+-assoc m n k (~ i)))
+          ((xs ++ ys) ++ zs) (xs ++ ys ++ zs)
+++-assoc {m = zero} [] ys zs = refl
+++-assoc {m = suc m} (x ∷ xs) ys zs i = x ∷ ++-assoc xs ys zs i

However, if we replace the m with _, Agda will fail with the following error:

Failed to solve the following constraints:
+  _41 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i1
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i1)) n k
+       (~ i1))
+    (blocked on any(_41, _57))
+  _40 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i0
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i0)) n k
+       (~ i0))
+    (blocked on any(_40, _57))
+  +-assoc (_m_39 (xs = xs) (ys = ys) (zs = zs) (i = i)) n k (~ i)
+    = _n_49
+    : ℕ
+    (blocked on _n_49)
+  +-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i)) n k
+  (~ i)
+    = ℕ.suc _n_49
+    : ℕ
+    (blocked on _m_39)
+  _40 (xs = []) (ys = ys) (zs = zs)
+    = _41 (xs = []) (ys = ys) (zs = zs)
+    : _x.A_43
+    (blocked on any(_40, _41))
+  _x.A_43
+    = Vec A
+      (+-assoc (_m_39 (xs = []) (ys = ys) (zs = zs) (i = i)) n k (~ i))
+    : Type
+    (blocked on _x.A_43)
+  _m_39 (i = i0) = m : ℕ (blocked on _m_39)
+  _m_39 (i = i1) + (n + k) = m + (n + k) : ℕ (blocked on _m_39)

In Aya, this will raise the following warning:

  6 │       def ++-assoc-type (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  7 │         => Path (fn i => Vec (+-assoc i) A)
+  8 │         (xs ++ (ys ++ zs))
+    │          ╰──────────────╯ ?a n A m o xs ys zs 0 >= n, ?b n A m o xs ys zs 0 >= m,
+                                ?c n A m o xs ys zs 0 >= o
+  9 │         ((xs ++ ys) ++ zs)
+    │          ╰──────────────╯
+    │          ╰──────────────╯ ?a n A m o xs ys zs 1 >= n, ?b n A m o xs ys zs 1 >= m,
+                                ?c n A m o xs ys zs 1 >= o
+
+Info: Solving equation(s) with not very general solution(s)

The inline equations are the type checking problems that Aya did something bad to solve.

Conor McBride told me pattern unification is a good algorithm, but the problem of interest might not be what we think it is. It is good for undergraduate induction, i.e. the object being induct on is a variable, and the motive of such induction is pattern. This is an enlightening perspective! But now that we have more problems, I think we might want to extend it. Just think about how many people use --lossy-unification in Agda.

`,26)]))}const P=z(C,[["render",L]]);export{I as __pageData,P as default}; diff --git a/assets/blog_extended-pruning.md.CuhyEVbT.lean.js b/assets/blog_extended-pruning.md.CuhyEVbT.lean.js new file mode 100644 index 0000000..a757619 --- /dev/null +++ b/assets/blog_extended-pruning.md.CuhyEVbT.lean.js @@ -0,0 +1,51 @@ +import{_ as z,c as w,j as s,a as e,a2 as V,o as _}from"./chunks/framework.BnE-uSbk.js";const C={mounted(){const h=new Map;function d(l){const a=l.querySelectorAll("a[href]");for(const n of a){const o=n.href,r=h.get(o)??new Set;r.add(n),h.set(o,r)}for(const n of a)n.onmouseover=function(){for(const o of h.get(this.href))o.classList.add("hover-highlight")},n.onmouseout=function(){for(const o of h.get(this.href))o.classList.remove("hover-highlight")}}function y(l){return decodeURIComponent(atob(l).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const f=(l=>{const a={};return(...n)=>{const o=JSON.stringify(n);return a[o]=a[o]||l(...n)}})(y);class m{constructor(){this.list=[]}dismiss(a){a&&(a.remove(),this.list=this.list.filter(n=>n!==a))}dismissIfNotUsed(a){a&&(a.markedForDismissal=!0,setTimeout(()=>{!a.userIsThinking&&this.allowAutoDismissal(a)&&this.dismiss(a)},1e3))}allowAutoDismissal(a){return a.markedForDismissal&&!a.userClicked}fireAutoDismissalFor(a){let n=this.list.find(o=>o.userCreatedFrom===a);this.dismissIfNotUsed(n)}createHoverFor(a,n,o){let r=this.list.find(i=>i.userCreatedFrom===a);if(r&&r.userClicked)return r;let b=[];const x=this.list.filter(i=>{if(this.allowAutoDismissal(i))return b.push(i),!1;const p=i.userCreatedFrom,u=a;let c=u;for(;c;){if(c===p)return!0;c=c.parentElement}for(c=p;c;){if(c===u)return!0;c=c.parentElement}return!1});b.forEach(i=>this.dismiss(i));let t=document.createElement("div");t.userCreatedFrom=a,t.innerHTML="×"+f(n),t.classList.add("AyaTooltipPopup"),d(t);let A=this;if(t.handleEvent=function(i){if(i.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let p=this.children[0];if(!p)return;let u=this;p.style.visibility="visible",p.addEventListener("click",c=>A.dismiss(u))}i.type==="mouseover"&&(this.userIsThinking=!0),i.type==="mouseout"&&(this.userIsThinking=!1,A.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),o.appendChild(t),t.style.left=`${a.offsetLeft}px`,x.length===0){const i=a.getBoundingClientRect(),p=t.getBoundingClientRect();i.bottom+p.height+30>window.innerHeight?t.style.top=`calc(${a.offsetTop-p.height+8}px - 3em)`:t.style.top=`${a.offsetTop+a.offsetHeight+8}px`}else{const i=Math.max(...x.map(p=>p.offsetTop+p.offsetHeight));t.style.top=`${i+8}px`}return this.list.push(t),t}}let v=new m;function g(l){return function(){let a=this;const n=a.getAttribute("data-tooltip-text");n&&(l?v.createHoverFor(a,n,document.body):v.fireAutoDismissalFor(a))}}d(document);{let l=document.getElementsByClassName("aya-tooltip");for(let a=0;aThis is the equality between two sized vectors: (xs ++ (ys ++ zs)) and ((xs ++ ys) ++ zs), the left hand side has type Vec (xs.size ++ (ys.size ++ zs.size)) A, and the right hand side has type Vec ((xs.size ++ ys.size) ++ zs.size).

So, the equality type is heterogeneous, and I introduce a type Vec (+-assoc i) A for it, where +-assoc is the associativity.

So this should type check, right? But pattern unification fails! I've left the two sides of +-assoc implicit, so I'm supposed to infer what numbers' associativity I care about, using pattern unification.

Then, pattern unification fails because the constraints are generated from cubical boundaries, where the "interval" variable is substituted to its sides. So, we have this type (the Path is called PathP in Agda):

Γ ­⊢ Path (fn i => Vec (+-assoc i) Nat) vecA vecB

Note the type of +-assoc is Fn (o p q : Nat) → ((o + p) + q) = (o + (p + q)).

So elaboration inserts metavariables:

Γ ­⊢ Path (fn i => Vec (+-assoc {?} {?} {?} i) Nat) vecA vecB

Where these metavariables have the following scope:

Γ , i : I ­⊢ ? : Nat

Note that the i : I binding is in-scope. So the metavariables with their spines added together becomes:

Γ ­⊢ Path (fn i => Vec (+-assoc {?a Γ i} {?b Γ i} {?c Γ i} i) Nat) vecA vecB

Then, we get the following tycking problems, according to the rules of Path:

vecA : Vec (+-assoc {?a Γ 0} {?b Γ 0} {?c Γ 0} 0) Nat
+vecB : Vec (+-assoc {?a Γ 1} {?b Γ 1} {?c Γ 1} 1) Nat

Look at the spines of all of these metavariables. None of them are in pattern fragment. So every equality constraint cannot be solved by pattern, because they're always equality after a substitution!

This can be solved by further extending your algorithm with pruning or a constraint system with a "lax" mode of solving metas when your equations rely essentially on non-pattern equations, but I feel it has defeated the point of finding the most general solution, which I used to believe to be the purpose of pattern unification....

Case Study

Right now Aya will try to prune these non-pattern arguments out and try to solve them. This obviously generates non-unique solutions, but I think it will be useful in practice.

In Agda, the following code is in the library:

++-assoc : ∀ {m n k} (xs : Vec A m) (ys : Vec A n) (zs : Vec A k) →
+          PathP (λ i → Vec A (+-assoc m n k (~ i)))
+          ((xs ++ ys) ++ zs) (xs ++ ys ++ zs)
+++-assoc {m = zero} [] ys zs = refl
+++-assoc {m = suc m} (x ∷ xs) ys zs i = x ∷ ++-assoc xs ys zs i

However, if we replace the m with _, Agda will fail with the following error:

Failed to solve the following constraints:
+  _41 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i1
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i1)) n k
+       (~ i1))
+    (blocked on any(_41, _57))
+  _40 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i0
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i0)) n k
+       (~ i0))
+    (blocked on any(_40, _57))
+  +-assoc (_m_39 (xs = xs) (ys = ys) (zs = zs) (i = i)) n k (~ i)
+    = _n_49
+    : ℕ
+    (blocked on _n_49)
+  +-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i)) n k
+  (~ i)
+    = ℕ.suc _n_49
+    : ℕ
+    (blocked on _m_39)
+  _40 (xs = []) (ys = ys) (zs = zs)
+    = _41 (xs = []) (ys = ys) (zs = zs)
+    : _x.A_43
+    (blocked on any(_40, _41))
+  _x.A_43
+    = Vec A
+      (+-assoc (_m_39 (xs = []) (ys = ys) (zs = zs) (i = i)) n k (~ i))
+    : Type
+    (blocked on _x.A_43)
+  _m_39 (i = i0) = m : ℕ (blocked on _m_39)
+  _m_39 (i = i1) + (n + k) = m + (n + k) : ℕ (blocked on _m_39)

In Aya, this will raise the following warning:

  6 │       def ++-assoc-type (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  7 │         => Path (fn i => Vec (+-assoc i) A)
+  8 │         (xs ++ (ys ++ zs))
+    │          ╰──────────────╯ ?a n A m o xs ys zs 0 >= n, ?b n A m o xs ys zs 0 >= m,
+                                ?c n A m o xs ys zs 0 >= o
+  9 │         ((xs ++ ys) ++ zs)
+    │          ╰──────────────╯
+    │          ╰──────────────╯ ?a n A m o xs ys zs 1 >= n, ?b n A m o xs ys zs 1 >= m,
+                                ?c n A m o xs ys zs 1 >= o
+
+Info: Solving equation(s) with not very general solution(s)

The inline equations are the type checking problems that Aya did something bad to solve.

Conor McBride told me pattern unification is a good algorithm, but the problem of interest might not be what we think it is. It is good for undergraduate induction, i.e. the object being induct on is a variable, and the motive of such induction is pattern. This is an enlightening perspective! But now that we have more problems, I think we might want to extend it. Just think about how many people use --lossy-unification in Agda.

`,26)]))}const P=z(C,[["render",L]]);export{I as __pageData,P as default}; diff --git a/assets/blog_ind-prop.md.BgOiB5U1.js b/assets/blog_ind-prop.md.BgOiB5U1.js new file mode 100644 index 0000000..f36903a --- /dev/null +++ b/assets/blog_ind-prop.md.BgOiB5U1.js @@ -0,0 +1,18 @@ +import{_ as a,c as i,a2 as s,o as t}from"./chunks/framework.BnE-uSbk.js";const k=JSON.parse('{"title":"Impredicative Props are hard","description":"","frontmatter":{},"headers":[],"relativePath":"blog/ind-prop.md","filePath":"blog/ind-prop.md","lastUpdated":1718905368000}'),n={name:"blog/ind-prop.md"};function o(p,e,r,l,h,d){return t(),i("div",null,e[0]||(e[0]=[s(`

Impredicative Props are hard

Throughout this blog post, I will use the term Prop to mean the type of propositions, which does not have to be strict, but has the property that it cannot eliminate to Type.

Motivation

Long time ago I wrote a PASE question regarding definitional irrelevance. An important pro of Prop in my opinion is that it is more convenient to be turned impredicative. Mathematicians want impredicativity for various reasons, one thing being that it is natural to have a proposition being a quantification over types, which I think is true.

Now I want to point out several reasons to avoid Prop and impredicativity based on Prop. Note that I'm not asking you to get rid of impredicativity in general!

Ad-hoc termination rules of impredicative Prop

There is another related PASE question regarding termination. You don't have to read it, I'll paraphrase the example.

Usually, for structural induction, we have the notion of "comparing term size". For instance, if we have a pattern suc n, then recursively call the function itself with n on the same position is considered good, because we think n < suc n. But consider the following example.

It makes sense to define the following type:

haskell
data BrouwerTree
+  = Leaf Bool
+  | Branch (Nat -> BrouwerTree)

and have the following structural-induction:

haskell
left :: BrouwerTree -> Bool
+left (Leaf b) = b
+left (Branch xs) = left (xs 0)

Note that in the clause of left (Branch xs), the recursive call left (xs 0) is considered smaller, in other words, we think xs 0 < Branch xs.

This assumption is called 'predicative assumption'. As you may tell from the name, it can only be made on things that are predicative, and we know Prop is usually impredicative, so we should not allow this. At this point, you might expect a proof of false using predicative assumption on Prop, which I'll show in this blog post.

Note that allowing such recursion pattern is very important! The famous W-type is also using this assumption.

A counterexample with Prop looks like this (since we need to talk about universes and dependent types, we start using Agda syntax instead of Haskell):

data Bad : Prop where
+  branch : ((P : Prop) → P → P) → Bad
+
+bad : Bad
+bad = branch (λ P p → p)
+
+no-bad : Bad → ⊥
+no-bad (branch x) = no-bad (x Bad bad)
+
+very-bad : ⊥
+very-bad = no-bad bad

Notice that the no-bad (branch x) clause uses the recursion no-bad (x Bad bad), which is only valid with the predicative assumption. So, having this predicative assumption actually proves false for Prop, so for Prop, we need to patch the termination checker to ban this rule. So, how hard is it to patch the termination checker?

Coq and Lean have a similar problem, but they are generating eliminators for inductive definitions, so they can generate the correct eliminator for Prop, instead of patching the termination checker. Then, Coq carefully implements a comparison function for size-decreasing arguments (this means eliminators are not the "most primitive" thing in Coq, but the termination checker is also part of it. I got this piece of information from Lysxia and Meven Lennon-Bertrand). In Coq, the eliminator for Bad is

Bad_ind : forall P : Prop,
+    ((forall p : Prop, p -> p) -> P) ->
+    Bad -> P

Note that there is no recursive arguments, so there is no recursion allowed.

Now, this sounds like just adding some if statements to the termination checker, but the situation is actually worse. In Agda, metavariables are pervasive, like the following code is partially accepted:

data Bad : Prop where
+  b : ((P : { }0) → P → P) → Bad

Agda will not fail on this code, but then what to do in the termination checker is really unclear. If you're using a termination checker, you want to get rid of impredicativity of Prop! This eliminates the need of a universe-based irrelevance.

Alternative ways to impredicativity

We may use axioms to get impredicativity. Suppose we define (since we no longer have it in the language) Prop := Σ (A : Type) (isProp A), there are two different axioms that imply impredicativity of Prop:

  • Propositional resizing, which is basically a restatement of impredicativity.
  • Classical axioms, which implies that A : Prop is either or , which further implies that Prop ≅ Bool, which implies resizing.
  • A completely separate layer in the type theory that only concerns logic and propositions. This is similar to the solution in Russell's original simple theory of types, where we replace the "simple type" with dependent types.

If we think of the right way of doing math is to work with classical axioms, why on earth are we forging a weaker theorem as part of the language?

`,28)]))}const u=a(n,[["render",o]]);export{k as __pageData,u as default}; diff --git a/assets/blog_ind-prop.md.BgOiB5U1.lean.js b/assets/blog_ind-prop.md.BgOiB5U1.lean.js new file mode 100644 index 0000000..f36903a --- /dev/null +++ b/assets/blog_ind-prop.md.BgOiB5U1.lean.js @@ -0,0 +1,18 @@ +import{_ as a,c as i,a2 as s,o as t}from"./chunks/framework.BnE-uSbk.js";const k=JSON.parse('{"title":"Impredicative Props are hard","description":"","frontmatter":{},"headers":[],"relativePath":"blog/ind-prop.md","filePath":"blog/ind-prop.md","lastUpdated":1718905368000}'),n={name:"blog/ind-prop.md"};function o(p,e,r,l,h,d){return t(),i("div",null,e[0]||(e[0]=[s(`

Impredicative Props are hard

Throughout this blog post, I will use the term Prop to mean the type of propositions, which does not have to be strict, but has the property that it cannot eliminate to Type.

Motivation

Long time ago I wrote a PASE question regarding definitional irrelevance. An important pro of Prop in my opinion is that it is more convenient to be turned impredicative. Mathematicians want impredicativity for various reasons, one thing being that it is natural to have a proposition being a quantification over types, which I think is true.

Now I want to point out several reasons to avoid Prop and impredicativity based on Prop. Note that I'm not asking you to get rid of impredicativity in general!

Ad-hoc termination rules of impredicative Prop

There is another related PASE question regarding termination. You don't have to read it, I'll paraphrase the example.

Usually, for structural induction, we have the notion of "comparing term size". For instance, if we have a pattern suc n, then recursively call the function itself with n on the same position is considered good, because we think n < suc n. But consider the following example.

It makes sense to define the following type:

haskell
data BrouwerTree
+  = Leaf Bool
+  | Branch (Nat -> BrouwerTree)

and have the following structural-induction:

haskell
left :: BrouwerTree -> Bool
+left (Leaf b) = b
+left (Branch xs) = left (xs 0)

Note that in the clause of left (Branch xs), the recursive call left (xs 0) is considered smaller, in other words, we think xs 0 < Branch xs.

This assumption is called 'predicative assumption'. As you may tell from the name, it can only be made on things that are predicative, and we know Prop is usually impredicative, so we should not allow this. At this point, you might expect a proof of false using predicative assumption on Prop, which I'll show in this blog post.

Note that allowing such recursion pattern is very important! The famous W-type is also using this assumption.

A counterexample with Prop looks like this (since we need to talk about universes and dependent types, we start using Agda syntax instead of Haskell):

data Bad : Prop where
+  branch : ((P : Prop) → P → P) → Bad
+
+bad : Bad
+bad = branch (λ P p → p)
+
+no-bad : Bad → ⊥
+no-bad (branch x) = no-bad (x Bad bad)
+
+very-bad : ⊥
+very-bad = no-bad bad

Notice that the no-bad (branch x) clause uses the recursion no-bad (x Bad bad), which is only valid with the predicative assumption. So, having this predicative assumption actually proves false for Prop, so for Prop, we need to patch the termination checker to ban this rule. So, how hard is it to patch the termination checker?

Coq and Lean have a similar problem, but they are generating eliminators for inductive definitions, so they can generate the correct eliminator for Prop, instead of patching the termination checker. Then, Coq carefully implements a comparison function for size-decreasing arguments (this means eliminators are not the "most primitive" thing in Coq, but the termination checker is also part of it. I got this piece of information from Lysxia and Meven Lennon-Bertrand). In Coq, the eliminator for Bad is

Bad_ind : forall P : Prop,
+    ((forall p : Prop, p -> p) -> P) ->
+    Bad -> P

Note that there is no recursive arguments, so there is no recursion allowed.

Now, this sounds like just adding some if statements to the termination checker, but the situation is actually worse. In Agda, metavariables are pervasive, like the following code is partially accepted:

data Bad : Prop where
+  b : ((P : { }0) → P → P) → Bad

Agda will not fail on this code, but then what to do in the termination checker is really unclear. If you're using a termination checker, you want to get rid of impredicativity of Prop! This eliminates the need of a universe-based irrelevance.

Alternative ways to impredicativity

We may use axioms to get impredicativity. Suppose we define (since we no longer have it in the language) Prop := Σ (A : Type) (isProp A), there are two different axioms that imply impredicativity of Prop:

  • Propositional resizing, which is basically a restatement of impredicativity.
  • Classical axioms, which implies that A : Prop is either or , which further implies that Prop ≅ Bool, which implies resizing.
  • A completely separate layer in the type theory that only concerns logic and propositions. This is similar to the solution in Russell's original simple theory of types, where we replace the "simple type" with dependent types.

If we think of the right way of doing math is to work with classical axioms, why on earth are we forging a weaker theorem as part of the language?

`,28)]))}const u=a(n,[["render",o]]);export{k as __pageData,u as default}; diff --git a/assets/blog_index-unification.md.DR8rUZJu.js b/assets/blog_index-unification.md.DR8rUZJu.js new file mode 100644 index 0000000..aa0af3c --- /dev/null +++ b/assets/blog_index-unification.md.DR8rUZJu.js @@ -0,0 +1,7 @@ +import{_ as t,c as a,a2 as n,o}from"./chunks/framework.BnE-uSbk.js";const u=JSON.parse('{"title":"Index unification and forced patterns in Aya","description":"","frontmatter":{},"headers":[],"relativePath":"blog/index-unification.md","filePath":"blog/index-unification.md","lastUpdated":1661920240000}'),i={name:"blog/index-unification.md"};function s(c,e,d,r,l,p){return o(),a("div",null,e[0]||(e[0]=[n(`

Index unification and forced patterns in Aya

Aya implements a version of index unification algorithm that allows emission of obvious patterns. Here's an example. Consider the famous "sized-vector" Vec (n : Nat) (A : Type) definition, and we can perform some pattern matching:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)

This code may seem obviously correct, but why would I write about it if it's so simple? 😉 Let's run the type checking in our head, clause by clause and pattern by pattern.

  1. The first pattern in the first clause, a, is a valid pattern for Nat. This means we will substitute the codomain of the pattern matching with [a/n], where n is the corresponding name in the telescope and a is the term corresponding to the pattern.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. However, the expected type is Vec a A, which does not match the type of the pattern.

So, here is the problem! The well-typed version of the program is actually:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len zero vnil = 0
+len (suc a) (vcons _ x) = suc (len a x)

However, isn't it obvious that the first pattern in the first clause must be zero? It would be nice if the type checker can figure this out by itself. In fact, both Agda and Idris can do this! In Agda, the feature is called "dotted patterns" in the documentation and "inaccessible patterns" in the paper. I will prefer calling it "forced patterns" because the patterns are actually accessible (in the sense that the bindings in the patterns are used) and does not use the Agda dot syntax.

Forced patterns are not easy to implement. The simplest pattern type checking algorithm can be quite straightforward: we check the type of the pattern, add the bindings to the context so we can type the rest of the telescope, and check the body of the clause. With forced patterns, we will need to change the existing well-typed variable patterns into constructor patterns, so the algorithm becomes stateful.

In Aya, I introduced the concept of "meta patteriables" which is a funny reference to "meta variables" used in unification in conversion check.

The so-called "meta patteriables"

Related PR: #198

When we see a variable pattern, we transform it into a MetaPat which is a "unification variable" pattern that can be "solved" into another pattern. A reference to a MetaPat is converted into a special meta variable that has a mutable reference to the MetaPat (this can be replaced by a mutable map in the type checking state when you need purity, but I prefer mutable references for implementation simplicity).

When we are type checking a pattern of type D a for D an indexed inductive family and the expected type is D b where b is the special meta variable, we claim that b is solved to a, and the MetaPat that corresponds to b will be transformed into a when we finalize the type checking results.

There are two more cases to deal with:

  1. In case a MetaPat is not "solved", we just let it be a variable pattern.
  2. In case a MetaPat is "solved" more than once, we must make sure the solutions are identical.

Note that a MetaPat may contain bindings, but these bindings are already from the current context, so we do not need to add them again to the context.

Now, let's run the new algorithm:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)
  1. The first pattern in the first clause, a, is a valid pattern for Nat, so we generate a MetaPat(a) and substitute the codomain with MetaPatRef(a), e.g. Vec MetaPatRef(a) A -> Nat.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. The expected type is Vec MetaPatRef(a) A, and we solve MetaPat(a) to zero.
  3. Now we check the body and finalize the clause. Since a is solved to zero, we generate the well-typed clause len zero vnil = 0 which is exactly what we need.

Thanks for reading!

`,21)]))}const f=t(i,[["render",s]]);export{u as __pageData,f as default}; diff --git a/assets/blog_index-unification.md.DR8rUZJu.lean.js b/assets/blog_index-unification.md.DR8rUZJu.lean.js new file mode 100644 index 0000000..aa0af3c --- /dev/null +++ b/assets/blog_index-unification.md.DR8rUZJu.lean.js @@ -0,0 +1,7 @@ +import{_ as t,c as a,a2 as n,o}from"./chunks/framework.BnE-uSbk.js";const u=JSON.parse('{"title":"Index unification and forced patterns in Aya","description":"","frontmatter":{},"headers":[],"relativePath":"blog/index-unification.md","filePath":"blog/index-unification.md","lastUpdated":1661920240000}'),i={name:"blog/index-unification.md"};function s(c,e,d,r,l,p){return o(),a("div",null,e[0]||(e[0]=[n(`

Index unification and forced patterns in Aya

Aya implements a version of index unification algorithm that allows emission of obvious patterns. Here's an example. Consider the famous "sized-vector" Vec (n : Nat) (A : Type) definition, and we can perform some pattern matching:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)

This code may seem obviously correct, but why would I write about it if it's so simple? 😉 Let's run the type checking in our head, clause by clause and pattern by pattern.

  1. The first pattern in the first clause, a, is a valid pattern for Nat. This means we will substitute the codomain of the pattern matching with [a/n], where n is the corresponding name in the telescope and a is the term corresponding to the pattern.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. However, the expected type is Vec a A, which does not match the type of the pattern.

So, here is the problem! The well-typed version of the program is actually:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len zero vnil = 0
+len (suc a) (vcons _ x) = suc (len a x)

However, isn't it obvious that the first pattern in the first clause must be zero? It would be nice if the type checker can figure this out by itself. In fact, both Agda and Idris can do this! In Agda, the feature is called "dotted patterns" in the documentation and "inaccessible patterns" in the paper. I will prefer calling it "forced patterns" because the patterns are actually accessible (in the sense that the bindings in the patterns are used) and does not use the Agda dot syntax.

Forced patterns are not easy to implement. The simplest pattern type checking algorithm can be quite straightforward: we check the type of the pattern, add the bindings to the context so we can type the rest of the telescope, and check the body of the clause. With forced patterns, we will need to change the existing well-typed variable patterns into constructor patterns, so the algorithm becomes stateful.

In Aya, I introduced the concept of "meta patteriables" which is a funny reference to "meta variables" used in unification in conversion check.

The so-called "meta patteriables"

Related PR: #198

When we see a variable pattern, we transform it into a MetaPat which is a "unification variable" pattern that can be "solved" into another pattern. A reference to a MetaPat is converted into a special meta variable that has a mutable reference to the MetaPat (this can be replaced by a mutable map in the type checking state when you need purity, but I prefer mutable references for implementation simplicity).

When we are type checking a pattern of type D a for D an indexed inductive family and the expected type is D b where b is the special meta variable, we claim that b is solved to a, and the MetaPat that corresponds to b will be transformed into a when we finalize the type checking results.

There are two more cases to deal with:

  1. In case a MetaPat is not "solved", we just let it be a variable pattern.
  2. In case a MetaPat is "solved" more than once, we must make sure the solutions are identical.

Note that a MetaPat may contain bindings, but these bindings are already from the current context, so we do not need to add them again to the context.

Now, let's run the new algorithm:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)
  1. The first pattern in the first clause, a, is a valid pattern for Nat, so we generate a MetaPat(a) and substitute the codomain with MetaPatRef(a), e.g. Vec MetaPatRef(a) A -> Nat.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. The expected type is Vec MetaPatRef(a) A, and we solve MetaPat(a) to zero.
  3. Now we check the body and finalize the clause. Since a is solved to zero, we generate the well-typed clause len zero vnil = 0 which is exactly what we need.

Thanks for reading!

`,21)]))}const f=t(i,[["render",s]]);export{u as __pageData,f as default}; diff --git a/assets/blog_index.md.DR7jCmfM.js b/assets/blog_index.md.DR7jCmfM.js new file mode 100644 index 0000000..18a8b12 --- /dev/null +++ b/assets/blog_index.md.DR7jCmfM.js @@ -0,0 +1 @@ +import{_ as t,c as o,j as e,a as s,o as r}from"./chunks/framework.BnE-uSbk.js";const f=JSON.parse('{"title":"Aya blogs","description":"","frontmatter":{},"headers":[],"relativePath":"blog/index.md","filePath":"blog/index.md","lastUpdated":1662566075000}'),n={name:"blog/index.md"};function l(i,a,d,c,p,b){return r(),o("div",null,a[0]||(a[0]=[e("h1",{id:"aya-blogs",tabindex:"-1"},[s("Aya blogs "),e("a",{class:"header-anchor",href:"#aya-blogs","aria-label":'Permalink to "Aya blogs"'},"​")],-1),e("p",null,"See the sidebar 👈 for the list of blog posts.",-1),e("p",null,"Note that some posts are written before some breaking syntax changes. The code examples may not work with the latest version of Aya.",-1)]))}const h=t(n,[["render",l]]);export{f as __pageData,h as default}; diff --git a/assets/blog_index.md.DR7jCmfM.lean.js b/assets/blog_index.md.DR7jCmfM.lean.js new file mode 100644 index 0000000..18a8b12 --- /dev/null +++ b/assets/blog_index.md.DR7jCmfM.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,j as e,a as s,o as r}from"./chunks/framework.BnE-uSbk.js";const f=JSON.parse('{"title":"Aya blogs","description":"","frontmatter":{},"headers":[],"relativePath":"blog/index.md","filePath":"blog/index.md","lastUpdated":1662566075000}'),n={name:"blog/index.md"};function l(i,a,d,c,p,b){return r(),o("div",null,a[0]||(a[0]=[e("h1",{id:"aya-blogs",tabindex:"-1"},[s("Aya blogs "),e("a",{class:"header-anchor",href:"#aya-blogs","aria-label":'Permalink to "Aya blogs"'},"​")],-1),e("p",null,"See the sidebar 👈 for the list of blog posts.",-1),e("p",null,"Note that some posts are written before some breaking syntax changes. The code examples may not work with the latest version of Aya.",-1)]))}const h=t(n,[["render",l]]);export{f as __pageData,h as default}; diff --git a/assets/blog_lang-exts.md.hyGXHWfR.js b/assets/blog_lang-exts.md.hyGXHWfR.js new file mode 100644 index 0000000..7afd359 --- /dev/null +++ b/assets/blog_lang-exts.md.hyGXHWfR.js @@ -0,0 +1 @@ +import{_ as a,c as t,a2 as s,o as i}from"./chunks/framework.BnE-uSbk.js";const g=JSON.parse('{"title":"Haskell or Agda style extensions","description":"","frontmatter":{},"headers":[],"relativePath":"blog/lang-exts.md","filePath":"blog/lang-exts.md","lastUpdated":1662566075000}'),o={name:"blog/lang-exts.md"};function n(r,e,l,c,u,d){return i(),t("div",null,e[0]||(e[0]=[s('

Haskell or Agda style extensions

In Haskell, you can do {-# LANGUAGE TypeFamilies #-}, and similarly in Agda you can {-# OPTIONS --two-levels #-}. These "pragma" can also be specified via command line arguments. Since Haskell is too weak and even basic features need extensions, I'll be avoiding talking about it and stick to Agda.

Agda's extensions

The purpose of these pragma is threefold:

  • Disable or enable (particularly disable) certain checks or compiler phases such as positivity checks, termination checks, deletion rule in unification, etc.
  • Modify the compiler by changing some parameters, such as termination check's recursion depth, use call-by-name instead of call-by-need, cumulativity, etc.
  • Disable or enable (particularly enable) certain language features, such as cubical features, sized types, custom rewriting rules, etc.

One special pragma is to ensure that no known inconsistent flag or combination of flags is turned on -- --safe. Let's discuss it later.

The current status of Agda libraries, that having separate cubical, HoTT library, and standard library, implementing the basic features individually, is a significant evidence that Agda is barely a programming language, but a collection of programming languages that share a lot in common and have good interoperability. Each flag that enables a certain language feature makes Agda a different language, and it is difficult in general to make two different language source-to-source compatible (see Kotlin-Java, Scala-Java, etc).

It is good to keep your language evolving like Agda (adding new features aggressively), and indeed Agda is the proof assistant with the richest set of language features I've known so far. However, this also negatively impacts Agda's reputation to some extent, that people say it's an experiment in type theory. Well, maybe it's not a negative impact, but it prevents big customers (such as Mathematicians looking for a tool to formalize math) from choosing the language. At least, we don't want this to happen to our language.

Aya's choice?

So, we will not introduce any "feature" flags, and will have only one base library. Aya will be one language, its features are its features. If we decide on removing a feature, then we remove it from the language (not going to keep it as an optional flag). If we decide on adding a feature, we add it and it should be available without any options.

It should still be encouraged to add some fancy, experimental features, but I think they should stay in branches or forks and will be either enlisted to the language or abandoned eventually.

However, the "parameters" part is not as bad. For example, it is very easy to allow type-in-type in the type checker -- we just disable the level solver. This is useful when the level solver prevents us from experimenting something classical using our language features but unfortunately the level solver is just unhappy with something minor. We can also like tweak the conversion checking algorithm we use, like we can use a simpler one that only solves first-order equations or we can enable the full-blown pattern unification algorithm. Verbosity levels, can also be seen as such parameter, and it's extremely useful for debugging the compiler. So we can apply that.

Safe flag?

To be honest, it's hard to decide on a semantic of the word "safe", and relate that to the Agda pragma --safe. To me, it means "logical consistency", and if we can set --safe as the last argument of an Agda file, it should be guaranteed by Agda that it cannot provide you a proof of false. There are many related discussion in the Agda issue tracker that talks 'bout how should --safe behave. Sometimes it fits my guess (for logical consistency), sometimes it implies more stuffs.

Anyway, a "logical consistency" flag seems useful, and will probably appear in Aya.

For disabling or enabling some checks, if we disable a check that is required to be consistent, then it should break --safe. I think we will of course enable all of these checks by default, so exploiting the disabledness of a check can lead to inconsistency eventually. So, we can use an "unsafe" flag to ensure that our language is only unsafe when we want it to be. It is quite meaningful as well to have an "unsafe" mode, from a real-world programming perspective.

Conclusion

We'll have a language, with some flags that tweaks the parameters of some algorithms (which are no-harm), and some flags for disabling some checks (which will lead to an error at the end of tycking), and an unsafe flag that enables a set of features such as sorry and suppresses the error of disabling checks.

Library Design

Speaking of the base library design, I have some vague ideas in mind. I'd like it to be split into three parts (not sure if we're gonna make it three modules inside one stdlib or three standalone libraries):

  • The base part, for basic definitions like lists, trees, sorting, rings, categories, path lemmas, simple tactics like rewrites, etc.
  • The programming part, for I/O, effects, unsafe operations, FFI, etc.
  • The math part, like arend-lib or Lean's mathlib.

Then, we can use these libraries on-demand.

',22)]))}const f=a(o,[["render",n]]);export{g as __pageData,f as default}; diff --git a/assets/blog_lang-exts.md.hyGXHWfR.lean.js b/assets/blog_lang-exts.md.hyGXHWfR.lean.js new file mode 100644 index 0000000..7afd359 --- /dev/null +++ b/assets/blog_lang-exts.md.hyGXHWfR.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,a2 as s,o as i}from"./chunks/framework.BnE-uSbk.js";const g=JSON.parse('{"title":"Haskell or Agda style extensions","description":"","frontmatter":{},"headers":[],"relativePath":"blog/lang-exts.md","filePath":"blog/lang-exts.md","lastUpdated":1662566075000}'),o={name:"blog/lang-exts.md"};function n(r,e,l,c,u,d){return i(),t("div",null,e[0]||(e[0]=[s('

Haskell or Agda style extensions

In Haskell, you can do {-# LANGUAGE TypeFamilies #-}, and similarly in Agda you can {-# OPTIONS --two-levels #-}. These "pragma" can also be specified via command line arguments. Since Haskell is too weak and even basic features need extensions, I'll be avoiding talking about it and stick to Agda.

Agda's extensions

The purpose of these pragma is threefold:

  • Disable or enable (particularly disable) certain checks or compiler phases such as positivity checks, termination checks, deletion rule in unification, etc.
  • Modify the compiler by changing some parameters, such as termination check's recursion depth, use call-by-name instead of call-by-need, cumulativity, etc.
  • Disable or enable (particularly enable) certain language features, such as cubical features, sized types, custom rewriting rules, etc.

One special pragma is to ensure that no known inconsistent flag or combination of flags is turned on -- --safe. Let's discuss it later.

The current status of Agda libraries, that having separate cubical, HoTT library, and standard library, implementing the basic features individually, is a significant evidence that Agda is barely a programming language, but a collection of programming languages that share a lot in common and have good interoperability. Each flag that enables a certain language feature makes Agda a different language, and it is difficult in general to make two different language source-to-source compatible (see Kotlin-Java, Scala-Java, etc).

It is good to keep your language evolving like Agda (adding new features aggressively), and indeed Agda is the proof assistant with the richest set of language features I've known so far. However, this also negatively impacts Agda's reputation to some extent, that people say it's an experiment in type theory. Well, maybe it's not a negative impact, but it prevents big customers (such as Mathematicians looking for a tool to formalize math) from choosing the language. At least, we don't want this to happen to our language.

Aya's choice?

So, we will not introduce any "feature" flags, and will have only one base library. Aya will be one language, its features are its features. If we decide on removing a feature, then we remove it from the language (not going to keep it as an optional flag). If we decide on adding a feature, we add it and it should be available without any options.

It should still be encouraged to add some fancy, experimental features, but I think they should stay in branches or forks and will be either enlisted to the language or abandoned eventually.

However, the "parameters" part is not as bad. For example, it is very easy to allow type-in-type in the type checker -- we just disable the level solver. This is useful when the level solver prevents us from experimenting something classical using our language features but unfortunately the level solver is just unhappy with something minor. We can also like tweak the conversion checking algorithm we use, like we can use a simpler one that only solves first-order equations or we can enable the full-blown pattern unification algorithm. Verbosity levels, can also be seen as such parameter, and it's extremely useful for debugging the compiler. So we can apply that.

Safe flag?

To be honest, it's hard to decide on a semantic of the word "safe", and relate that to the Agda pragma --safe. To me, it means "logical consistency", and if we can set --safe as the last argument of an Agda file, it should be guaranteed by Agda that it cannot provide you a proof of false. There are many related discussion in the Agda issue tracker that talks 'bout how should --safe behave. Sometimes it fits my guess (for logical consistency), sometimes it implies more stuffs.

Anyway, a "logical consistency" flag seems useful, and will probably appear in Aya.

For disabling or enabling some checks, if we disable a check that is required to be consistent, then it should break --safe. I think we will of course enable all of these checks by default, so exploiting the disabledness of a check can lead to inconsistency eventually. So, we can use an "unsafe" flag to ensure that our language is only unsafe when we want it to be. It is quite meaningful as well to have an "unsafe" mode, from a real-world programming perspective.

Conclusion

We'll have a language, with some flags that tweaks the parameters of some algorithms (which are no-harm), and some flags for disabling some checks (which will lead to an error at the end of tycking), and an unsafe flag that enables a set of features such as sorry and suppresses the error of disabling checks.

Library Design

Speaking of the base library design, I have some vague ideas in mind. I'd like it to be split into three parts (not sure if we're gonna make it three modules inside one stdlib or three standalone libraries):

  • The base part, for basic definitions like lists, trees, sorting, rings, categories, path lemmas, simple tactics like rewrites, etc.
  • The programming part, for I/O, effects, unsafe operations, FFI, etc.
  • The math part, like arend-lib or Lean's mathlib.

Then, we can use these libraries on-demand.

',22)]))}const f=a(o,[["render",n]]);export{g as __pageData,f as default}; diff --git a/assets/blog_path-elab.md.DXdo4WbU.js b/assets/blog_path-elab.md.DXdo4WbU.js new file mode 100644 index 0000000..f225e7e --- /dev/null +++ b/assets/blog_path-elab.md.DXdo4WbU.js @@ -0,0 +1,21 @@ +import{_ as a,c as t,a2 as n,o as s}from"./chunks/framework.BnE-uSbk.js";const u=JSON.parse('{"title":"Elaboration of the \\"extension\\" type","description":"","frontmatter":{},"headers":[],"relativePath":"blog/path-elab.md","filePath":"blog/path-elab.md","lastUpdated":1679673438000}'),i={name:"blog/path-elab.md"};function o(p,e,l,r,c,h){return s(),t("div",null,e[0]||(e[0]=[n(`

Elaboration of the "extension" type

Aya uses the so-called "extension" type (probably first-appeared here) as a generalized version of path type.

Instead of using the conventional path type, as in Cubical Agda:

  • PathP (λ i → A i) a b for a : A 0 and b : A 1
  • λ i → a : PathP (λ i → A i) (a 0) (a 1) for a : A i
  • p i : A i for p : PathP (λ i → A i) a b
    • p 0 = a and p 1 = b

This type looks good, but it does not scale to higher dimensions. Consider, for example, the type of a square with four faces specified (from Agda's cubical library):

Square :
+  {a₀₀ a₀₁ : A} (a₀₋ : a₀₀ ≡ a₀₁)
+  {a₁₀ a₁₁ : A} (a₁₋ : a₁₀ ≡ a₁₁)
+  (a₋₀ : a₀₀ ≡ a₁₀) (a₋₁ : a₀₁ ≡ a₁₁)
+  → Type _
+Square a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → a₋₀ i ≡ a₋₁ i) a₀₋ a₁₋

It gets even worse when the type is heterogeneous:

SquareP :
+  (A : I → I → Type ℓ)
+  {a₀₀ : A i0 i0} {a₀₁ : A i0 i1} (a₀₋ : PathP (λ j → A i0 j) a₀₀ a₀₁)
+  {a₁₀ : A i1 i0} {a₁₁ : A i1 i1} (a₁₋ : PathP (λ j → A i1 j) a₁₀ a₁₁)
+  (a₋₀ : PathP (λ i → A i i0) a₀₀ a₁₀) (a₋₁ : PathP (λ i → A i i1) a₀₁ a₁₁)
+  → Type ℓ
+SquareP A a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → PathP (λ j → A i j) (a₋₀ i) (a₋₁ i)) a₀₋ a₁₋

We have decided to use a partial element to represent these faces, and so we can freely add or delete these a face, without having to explicitly write down all faces for generality. This leads to the following syntax:

--------  ↓ type           ↓ the "i = 0" end is b
+[| i |] (A i) {| i := a | ~ i := b |}
+-- ^ interval         ^ the "i = 1" end is a

The above type is equivalent to PathP (λ i → A i) a b. We may use this to simplify the type signature of path concatenation:

def concat {A : Type}
+  (p : [| i |] A {| |})
+  (q : [| i |] A {| ~ i := p 1 |})
+  : [| i |] A {| ~ i := p 0 | i := q 1 |}

It has fewer parameters than the conventional version:

def concat {A : Type}
+  {a b c : A}
+  (p : Path A a b)
+  (q : Path A b c)
+  : Path A a c

Now, how to implement this type? We have decided to overload lambdas and expressions as Cubical Agda did, but we have encountered several problems. Here's the story, in chronological order.

Below, we use "type checking" and we actually mean "elaboration".

First attempt

Principle: do not annotate the terms (including variable references) with types, because this is going to harm efficiency and the code that tries to generate terms (now they'll have to generate the types as well, pain!).

Problem: reduction of path application is type-directed, like p 1 will reduce according to the type of p.

Solution: annotate the path applications instead. Every time we do type checking & we get a term of path type, we "η-expand" it into a normal lambda expression with a path application inside. This secures the reduction of path applications.

New Problem: we expand too much. In case we want to check the type of term against a path type, the term is actually η-expanded and has a Π-type. So, we have the manually write path lambdas everywhere, e.g. given p : Path A a b, and only λ i → p i is a valid term of type Path A a b, not p (which is internally a lambda).

Lesson: we need to preserve the types somehow, generate path applications only when necessary.

Second attempt

New Solution: when checking something against a path type, we directly apply the boundary checks, instead of trying to invoke synthesize and unify the types. This eliminates a lot of λ i → p i problems.

New Problem: this is incompatible with implicit arguments. Consider the following problem:

  • have: idp : {a : A} -> Path A a a
  • elaborated: λ i → idp i : {a : A} -> I -> A
  • check: idp : Path Nat zero zero

The new solution will try to apply the boundary before inserting the implicit arguments, which leads to type-incorrect terms.

Lesson: we probably should not change the bidirectional type checking algorithm too much.

Third attempt

New Solution: the type information is known in the bidirectional type checking anyway, so we only generate path applications during the type checking of application terms.

This has worked so far, with some unsolved problems (yet to be discussed):

  • Is p : [| i |] A {| |} an instance of type [| i |] A {| i := a |}?
    • Currently, Aya do not think so.
  • Can we automatically turn Agda-style squares to its preferred version in generalized path type?
    • Related issue: 530
    • A sort of "flattening"

If you have any thoughts, feel free to reach out :)

Update (2023-03-24)

The implementation has been updated to solve some the above problems partially. Essentially, we need to do one thing: coercive subtyping. Since the type checking already respects the type (say, does not change the type), it remains to insert an η-expansion when the subtyping is invoked. We also need to store the boundary information in the path application term to have simple normalization algorithm.

Carlo Angiuli told me that in cooltt, the path type is decoded (in the sense of the universe à la Tarski el operator) into a Π-type that returns a cubical subtype, and since el is not required to be injective, this should be fine. At first, I was worried about the fibrancy of the path type, because a Π-type into a subtype is not fibrant, but it turns out that this is unrelated. We don't talk about the fibrancy of the types, but only the fibrancy of the type codes.

`,36)]))}const b=a(i,[["render",o]]);export{u as __pageData,b as default}; diff --git a/assets/blog_path-elab.md.DXdo4WbU.lean.js b/assets/blog_path-elab.md.DXdo4WbU.lean.js new file mode 100644 index 0000000..f225e7e --- /dev/null +++ b/assets/blog_path-elab.md.DXdo4WbU.lean.js @@ -0,0 +1,21 @@ +import{_ as a,c as t,a2 as n,o as s}from"./chunks/framework.BnE-uSbk.js";const u=JSON.parse('{"title":"Elaboration of the \\"extension\\" type","description":"","frontmatter":{},"headers":[],"relativePath":"blog/path-elab.md","filePath":"blog/path-elab.md","lastUpdated":1679673438000}'),i={name:"blog/path-elab.md"};function o(p,e,l,r,c,h){return s(),t("div",null,e[0]||(e[0]=[n(`

Elaboration of the "extension" type

Aya uses the so-called "extension" type (probably first-appeared here) as a generalized version of path type.

Instead of using the conventional path type, as in Cubical Agda:

  • PathP (λ i → A i) a b for a : A 0 and b : A 1
  • λ i → a : PathP (λ i → A i) (a 0) (a 1) for a : A i
  • p i : A i for p : PathP (λ i → A i) a b
    • p 0 = a and p 1 = b

This type looks good, but it does not scale to higher dimensions. Consider, for example, the type of a square with four faces specified (from Agda's cubical library):

Square :
+  {a₀₀ a₀₁ : A} (a₀₋ : a₀₀ ≡ a₀₁)
+  {a₁₀ a₁₁ : A} (a₁₋ : a₁₀ ≡ a₁₁)
+  (a₋₀ : a₀₀ ≡ a₁₀) (a₋₁ : a₀₁ ≡ a₁₁)
+  → Type _
+Square a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → a₋₀ i ≡ a₋₁ i) a₀₋ a₁₋

It gets even worse when the type is heterogeneous:

SquareP :
+  (A : I → I → Type ℓ)
+  {a₀₀ : A i0 i0} {a₀₁ : A i0 i1} (a₀₋ : PathP (λ j → A i0 j) a₀₀ a₀₁)
+  {a₁₀ : A i1 i0} {a₁₁ : A i1 i1} (a₁₋ : PathP (λ j → A i1 j) a₁₀ a₁₁)
+  (a₋₀ : PathP (λ i → A i i0) a₀₀ a₁₀) (a₋₁ : PathP (λ i → A i i1) a₀₁ a₁₁)
+  → Type ℓ
+SquareP A a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → PathP (λ j → A i j) (a₋₀ i) (a₋₁ i)) a₀₋ a₁₋

We have decided to use a partial element to represent these faces, and so we can freely add or delete these a face, without having to explicitly write down all faces for generality. This leads to the following syntax:

--------  ↓ type           ↓ the "i = 0" end is b
+[| i |] (A i) {| i := a | ~ i := b |}
+-- ^ interval         ^ the "i = 1" end is a

The above type is equivalent to PathP (λ i → A i) a b. We may use this to simplify the type signature of path concatenation:

def concat {A : Type}
+  (p : [| i |] A {| |})
+  (q : [| i |] A {| ~ i := p 1 |})
+  : [| i |] A {| ~ i := p 0 | i := q 1 |}

It has fewer parameters than the conventional version:

def concat {A : Type}
+  {a b c : A}
+  (p : Path A a b)
+  (q : Path A b c)
+  : Path A a c

Now, how to implement this type? We have decided to overload lambdas and expressions as Cubical Agda did, but we have encountered several problems. Here's the story, in chronological order.

Below, we use "type checking" and we actually mean "elaboration".

First attempt

Principle: do not annotate the terms (including variable references) with types, because this is going to harm efficiency and the code that tries to generate terms (now they'll have to generate the types as well, pain!).

Problem: reduction of path application is type-directed, like p 1 will reduce according to the type of p.

Solution: annotate the path applications instead. Every time we do type checking & we get a term of path type, we "η-expand" it into a normal lambda expression with a path application inside. This secures the reduction of path applications.

New Problem: we expand too much. In case we want to check the type of term against a path type, the term is actually η-expanded and has a Π-type. So, we have the manually write path lambdas everywhere, e.g. given p : Path A a b, and only λ i → p i is a valid term of type Path A a b, not p (which is internally a lambda).

Lesson: we need to preserve the types somehow, generate path applications only when necessary.

Second attempt

New Solution: when checking something against a path type, we directly apply the boundary checks, instead of trying to invoke synthesize and unify the types. This eliminates a lot of λ i → p i problems.

New Problem: this is incompatible with implicit arguments. Consider the following problem:

  • have: idp : {a : A} -> Path A a a
  • elaborated: λ i → idp i : {a : A} -> I -> A
  • check: idp : Path Nat zero zero

The new solution will try to apply the boundary before inserting the implicit arguments, which leads to type-incorrect terms.

Lesson: we probably should not change the bidirectional type checking algorithm too much.

Third attempt

New Solution: the type information is known in the bidirectional type checking anyway, so we only generate path applications during the type checking of application terms.

This has worked so far, with some unsolved problems (yet to be discussed):

  • Is p : [| i |] A {| |} an instance of type [| i |] A {| i := a |}?
    • Currently, Aya do not think so.
  • Can we automatically turn Agda-style squares to its preferred version in generalized path type?
    • Related issue: 530
    • A sort of "flattening"

If you have any thoughts, feel free to reach out :)

Update (2023-03-24)

The implementation has been updated to solve some the above problems partially. Essentially, we need to do one thing: coercive subtyping. Since the type checking already respects the type (say, does not change the type), it remains to insert an η-expansion when the subtyping is invoked. We also need to store the boundary information in the path application term to have simple normalization algorithm.

Carlo Angiuli told me that in cooltt, the path type is decoded (in the sense of the universe à la Tarski el operator) into a Π-type that returns a cubical subtype, and since el is not required to be injective, this should be fine. At first, I was worried about the fibrancy of the path type, because a Π-type into a subtype is not fibrant, but it turns out that this is unrelated. We don't talk about the fibrancy of the types, but only the fibrancy of the type codes.

`,36)]))}const b=a(i,[["render",o]]);export{u as __pageData,b as default}; diff --git a/assets/blog_pathcon-elab.md.CriMvQIQ.js b/assets/blog_pathcon-elab.md.CriMvQIQ.js new file mode 100644 index 0000000..fe7fc58 --- /dev/null +++ b/assets/blog_pathcon-elab.md.CriMvQIQ.js @@ -0,0 +1,10 @@ +import{_ as t,c as m,a2 as a,j as s,a as l,o as e}from"./chunks/framework.BnE-uSbk.js";const d=JSON.parse('{"title":"Elaboration of path constructors","description":"","frontmatter":{},"headers":[],"relativePath":"blog/pathcon-elab.md","filePath":"blog/pathcon-elab.md","lastUpdated":1717138752000}'),p={name:"blog/pathcon-elab.md"};function r(c,n,i,o,h,g){return e(),m("div",null,n[0]||(n[0]=[a('

Elaboration of path constructors

This is not a blog post, but a reference for developers and type theory implementers.

Content below assumes knowledge on cubical type theory, for example the extension type and higher inductive types.

Syntax

  • [i]X{φu}[\\overline i] X\\{\\overline{φ↦ u}\\}: extension types, PathP A a b in Agda corresponds to [i]A i{i=0a,i=1b}[i] A~i\\{i=0↦ a, i=1↦ b\\}.
  • ii is sometimes used to denote i=1i=1 and ¬i¬ i is used to denote i=0i=0.

Flattening

Used in higher inductive type elaboration.

A[i]X{}AΠ(x:X)Yflatten(A):=A\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac{A \\ne [\\overline i] X\\set{\\cdots} \\quad A\\ne Π(x:X)→ Y} {\\flattenOp{A} := A}

flatten(X):=[j]Y{φu}flatten([i]X{φu}):=[i,j]Y{φu @ j,φu}\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac {\\flattenOp{X}:=[\\overline j] Y\\set{\\overline{φ'↦ u'}}} {\\flattenOp{[\\overline i] X\\set{\\overline{φ↦ u}}} := [\\overline i,\\overline j] Y\\set{\\overline{φ'↦ u'~@~\\overline j},\\overline{φ↦ u}}}

flatten(Π(x:X)Y):=Π(x:X)flatten(Y)\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac{} {\\flattenOp{Π(x:X)→ Y}:=Π(x:X)→ \\flattenOp{Y}}

Example

',11),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mtext",{mathvariant:"sans-serif"},"isProp"),s("mo",{stretchy:"false"},"("),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,":"),s("mo",null,"="),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")"),s("mo",null,"→"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mtext",{mathvariant:"sans-serif"},"isSet"),s("mo",{stretchy:"false"},"("),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,":"),s("mo",null,"="),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")"),s("mo",null,"→"),s("mtext",{mathvariant:"sans-serif"},"isProp"),s("mo",{stretchy:"false"},"("),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} \\textsf{isProp}(A)&:=Π(a~b:A) → [i]A\\set{i↦ a,¬ i↦ b}\\\\ \\textsf{isSet}(A)&:=Π(a~b:A)→\\textsf{isProp}([i]A\\set{i↦ a,¬ i↦ b})\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3em","vertical-align":"-1.25em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.75em"}},[s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isProp")]),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isSet")]),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.25em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.75em"}},[s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"}")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isProp")]),s("span",{class:"mopen"},"(["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.25em"}},[s("span")])])])])])])])])])])],-1),s("p",null,[l("So the normal form of "),s("code",null,"isSet"),l(" is:")],-1),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"p"),s("mtext",null," "),s("mi",null,"q"),s("mo",null,":"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"["),s("mi",null,"j"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"]"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"("),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},")"),s("mrow",null,[s("mo",{fence:"true"},"{"),s("mtext",null," "),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"q"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"p"),s("mtext",null," "),s("mo",{fence:"true"},"}")])])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\\set{i↦ a,¬ i↦ b})\\\\ &→ \\big[j\\big] \\big([i]A\\set{i↦ a,¬ i↦ b}\\big) \\Set{j↦ q, ¬ j↦ p}\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.01em","vertical-align":"-1.255em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"[")]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"]")]),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"(")]),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"}"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},")")]),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"minner"},[s("span",{class:"mopen delimcenter",style:{top:"0em"}},"{"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mclose delimcenter",style:{top:"0em"}},"}")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])])])])])])])])],-1),a('

And flattenOp(isSet(A))\\textsf{flattenOp}(\\textsf{isSet}(A)) is:

',1),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"p"),s("mtext",null," "),s("mi",null,"q"),s("mo",null,":"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"["),s("mi",null,"j"),s("mtext",null," "),s("mi",null,"i"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"]"),s("mi",null,"A"),s("mrow",null,[s("mo",{fence:"true"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mo",{separator:"true"},","),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"q"),s("mtext",null," "),s("mi",{mathvariant:"normal"},"@"),s("mtext",null," "),s("mi",null,"i"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"p"),s("mtext",null," "),s("mi",{mathvariant:"normal"},"@"),s("mtext",null," "),s("mi",null,"i"),s("mtext",null," "),s("mo",{fence:"true"},"}")])])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\\set{i↦ a,¬ i↦ b})\\\\ &→ \\big[j~i\\big] A \\Set{i↦ a,¬ i↦ b,j↦ q~@~i, ¬ j↦ p~@~i}\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.01em","vertical-align":"-1.255em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"[")]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"]")]),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"minner"},[s("span",{class:"mopen delimcenter",style:{top:"0em"}},"{"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord"},"@"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord"},"@"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mclose delimcenter",style:{top:"0em"}},"}")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])])])])])])])])],-1),a(`

So for example, set truncation from HoTT looks like this:

inductive SetTrunc (A : Type)
+| mk : A -> SetTrunc A
+| trunc : isSet (SetTrunc A)

The trunc constructor is elaborated to cubical syntax by flattening the type and attach the partial on the return type to the constructor, something like this:

trunc : Π (a b : SetTrunc A)
+    -> (p q : a = b)
+    -> (j i : I) -> SetTrunc A
+  { i = 1 -> a
+  ; i = 0 -> b
+  ; j = 1 -> q @ i
+  ; j = 0 -> p @ i
+  }

Aya is currently working on the so-called IApplyConfluence problem for recursive higher inductive types like SetTrunc, see this question which is a problem I'm wrapping my head around at the moment. More details will be posted later.

`,5)]))}const u=t(p,[["render",r]]);export{d as __pageData,u as default}; diff --git a/assets/blog_pathcon-elab.md.CriMvQIQ.lean.js b/assets/blog_pathcon-elab.md.CriMvQIQ.lean.js new file mode 100644 index 0000000..fe7fc58 --- /dev/null +++ b/assets/blog_pathcon-elab.md.CriMvQIQ.lean.js @@ -0,0 +1,10 @@ +import{_ as t,c as m,a2 as a,j as s,a as l,o as e}from"./chunks/framework.BnE-uSbk.js";const d=JSON.parse('{"title":"Elaboration of path constructors","description":"","frontmatter":{},"headers":[],"relativePath":"blog/pathcon-elab.md","filePath":"blog/pathcon-elab.md","lastUpdated":1717138752000}'),p={name:"blog/pathcon-elab.md"};function r(c,n,i,o,h,g){return e(),m("div",null,n[0]||(n[0]=[a('

Elaboration of path constructors

This is not a blog post, but a reference for developers and type theory implementers.

Content below assumes knowledge on cubical type theory, for example the extension type and higher inductive types.

Syntax

  • [i]X{φu}[\\overline i] X\\{\\overline{φ↦ u}\\}: extension types, PathP A a b in Agda corresponds to [i]A i{i=0a,i=1b}[i] A~i\\{i=0↦ a, i=1↦ b\\}.
  • ii is sometimes used to denote i=1i=1 and ¬i¬ i is used to denote i=0i=0.

Flattening

Used in higher inductive type elaboration.

A[i]X{}AΠ(x:X)Yflatten(A):=A\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac{A \\ne [\\overline i] X\\set{\\cdots} \\quad A\\ne Π(x:X)→ Y} {\\flattenOp{A} := A}

flatten(X):=[j]Y{φu}flatten([i]X{φu}):=[i,j]Y{φu @ j,φu}\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac {\\flattenOp{X}:=[\\overline j] Y\\set{\\overline{φ'↦ u'}}} {\\flattenOp{[\\overline i] X\\set{\\overline{φ↦ u}}} := [\\overline i,\\overline j] Y\\set{\\overline{φ'↦ u'~@~\\overline j},\\overline{φ↦ u}}}

flatten(Π(x:X)Y):=Π(x:X)flatten(Y)\\newcommand{\\flattenOp}[1]{\\textsf{flatten}(#1)} \\cfrac{} {\\flattenOp{Π(x:X)→ Y}:=Π(x:X)→ \\flattenOp{Y}}

Example

',11),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mtext",{mathvariant:"sans-serif"},"isProp"),s("mo",{stretchy:"false"},"("),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,":"),s("mo",null,"="),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")"),s("mo",null,"→"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mtext",{mathvariant:"sans-serif"},"isSet"),s("mo",{stretchy:"false"},"("),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,":"),s("mo",null,"="),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")"),s("mo",null,"→"),s("mtext",{mathvariant:"sans-serif"},"isProp"),s("mo",{stretchy:"false"},"("),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} \\textsf{isProp}(A)&:=Π(a~b:A) → [i]A\\set{i↦ a,¬ i↦ b}\\\\ \\textsf{isSet}(A)&:=Π(a~b:A)→\\textsf{isProp}([i]A\\set{i↦ a,¬ i↦ b})\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3em","vertical-align":"-1.25em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.75em"}},[s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isProp")]),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isSet")]),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.25em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.75em"}},[s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"}")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textsf"},"isProp")]),s("span",{class:"mopen"},"(["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.25em"}},[s("span")])])])])])])])])])])],-1),s("p",null,[l("So the normal form of "),s("code",null,"isSet"),l(" is:")],-1),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"p"),s("mtext",null," "),s("mi",null,"q"),s("mo",null,":"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"["),s("mi",null,"j"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"]"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"("),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},")"),s("mrow",null,[s("mo",{fence:"true"},"{"),s("mtext",null," "),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"q"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"p"),s("mtext",null," "),s("mo",{fence:"true"},"}")])])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\\set{i↦ a,¬ i↦ b})\\\\ &→ \\big[j\\big] \\big([i]A\\set{i↦ a,¬ i↦ b}\\big) \\Set{j↦ q, ¬ j↦ p}\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.01em","vertical-align":"-1.255em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"[")]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"]")]),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"(")]),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"}"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},")")]),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"minner"},[s("span",{class:"mopen delimcenter",style:{top:"0em"}},"{"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mclose delimcenter",style:{top:"0em"}},"}")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])])])])])])])])],-1),a('

And flattenOp(isSet(A))\\textsf{flattenOp}(\\textsf{isSet}(A)) is:

',1),s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"a"),s("mtext",null," "),s("mi",null,"b"),s("mo",null,":"),s("mi",null,"A"),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mi",{mathvariant:"normal"},"Π"),s("mo",{stretchy:"false"},"("),s("mi",null,"p"),s("mtext",null," "),s("mi",null,"q"),s("mo",null,":"),s("mo",{stretchy:"false"},"["),s("mi",null,"i"),s("mo",{stretchy:"false"},"]"),s("mi",null,"A"),s("mo",{stretchy:"false"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mtext",null," "),s("mo",{stretchy:"false"},"}"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"→"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"["),s("mi",null,"j"),s("mtext",null," "),s("mi",null,"i"),s("mo",{fence:"false",stretchy:"true",minsize:"1.2em",maxsize:"1.2em"},"]"),s("mi",null,"A"),s("mrow",null,[s("mo",{fence:"true"},"{"),s("mtext",null," "),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"a"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"i"),s("mo",null,"↦"),s("mi",null,"b"),s("mo",{separator:"true"},","),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"q"),s("mtext",null," "),s("mi",{mathvariant:"normal"},"@"),s("mtext",null," "),s("mi",null,"i"),s("mo",{separator:"true"},","),s("mi",{mathvariant:"normal"},"¬"),s("mi",null,"j"),s("mo",null,"↦"),s("mi",null,"p"),s("mtext",null," "),s("mi",{mathvariant:"normal"},"@"),s("mtext",null," "),s("mi",null,"i"),s("mtext",null," "),s("mo",{fence:"true"},"}")])])])])])]),s("annotation",{encoding:"application/x-tex"},"\\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\\set{i↦ a,¬ i↦ b})\\\\ &→ \\big[j~i\\big] A \\Set{i↦ a,¬ i↦ b,j↦ q~@~i, ¬ j↦ p~@~i}\\\\ \\end{align*} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.01em","vertical-align":"-1.255em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.755em"}},[s("span",{style:{top:"-3.915em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Π"),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},":"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mopen"},"["),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mclose"},"]"),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"{"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mclose"},"})")])]),s("span",{style:{top:"-2.405em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"→"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"[")]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mord"},[s("span",{class:"delimsizing size1"},"]")]),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"minner"},[s("span",{class:"mopen delimcenter",style:{top:"0em"}},"{"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"q"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord"},"@"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"¬"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05724em"}},"j"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"↦"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"p"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord"},"@"),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mclose delimcenter",style:{top:"0em"}},"}")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.255em"}},[s("span")])])])])])])])])])])],-1),a(`

So for example, set truncation from HoTT looks like this:

inductive SetTrunc (A : Type)
+| mk : A -> SetTrunc A
+| trunc : isSet (SetTrunc A)

The trunc constructor is elaborated to cubical syntax by flattening the type and attach the partial on the return type to the constructor, something like this:

trunc : Π (a b : SetTrunc A)
+    -> (p q : a = b)
+    -> (j i : I) -> SetTrunc A
+  { i = 1 -> a
+  ; i = 0 -> b
+  ; j = 1 -> q @ i
+  ; j = 0 -> p @ i
+  }

Aya is currently working on the so-called IApplyConfluence problem for recursive higher inductive types like SetTrunc, see this question which is a problem I'm wrapping my head around at the moment. More details will be posted later.

`,5)]))}const u=t(p,[["render",r]]);export{d as __pageData,u as default}; diff --git a/assets/blog_redirect.md.Ch6PGAGu.js b/assets/blog_redirect.md.Ch6PGAGu.js new file mode 100644 index 0000000..40ae0ef --- /dev/null +++ b/assets/blog_redirect.md.Ch6PGAGu.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as e,a as r,o as s}from"./chunks/framework.BnE-uSbk.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"blog/redirect.md","filePath":"blog/redirect.md","lastUpdated":1627270192000}'),n={name:"blog/redirect.md"};function l(d,t,p,c,i,m){return s(),o("div",null,t[0]||(t[0]=[e("p",null,"Hi OSSRH managers,",-1),e("p",null,[r("I'm Tesla Zhang and I own this aya-prover.org domain. I claim that it's me who created "),e("a",{href:"https://issues.sonatype.org/browse/OSSRH-71525",target:"_blank",rel:"noreferrer"},"OSSRH-71525"),r(". It's for the project "),e("a",{href:"https://github.com/aya-prover/aya-dev",target:"_blank",rel:"noreferrer"},"aya-prover"),r(".")],-1),e("p",null,"Thank you!",-1)]))}const g=a(n,[["render",l]]);export{h as __pageData,g as default}; diff --git a/assets/blog_redirect.md.Ch6PGAGu.lean.js b/assets/blog_redirect.md.Ch6PGAGu.lean.js new file mode 100644 index 0000000..40ae0ef --- /dev/null +++ b/assets/blog_redirect.md.Ch6PGAGu.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,j as e,a as r,o as s}from"./chunks/framework.BnE-uSbk.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"blog/redirect.md","filePath":"blog/redirect.md","lastUpdated":1627270192000}'),n={name:"blog/redirect.md"};function l(d,t,p,c,i,m){return s(),o("div",null,t[0]||(t[0]=[e("p",null,"Hi OSSRH managers,",-1),e("p",null,[r("I'm Tesla Zhang and I own this aya-prover.org domain. I claim that it's me who created "),e("a",{href:"https://issues.sonatype.org/browse/OSSRH-71525",target:"_blank",rel:"noreferrer"},"OSSRH-71525"),r(". It's for the project "),e("a",{href:"https://github.com/aya-prover/aya-dev",target:"_blank",rel:"noreferrer"},"aya-prover"),r(".")],-1),e("p",null,"Thank you!",-1)]))}const g=a(n,[["render",l]]);export{h as __pageData,g as default}; diff --git a/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.js b/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.js new file mode 100644 index 0000000..12515bc --- /dev/null +++ b/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.js @@ -0,0 +1,67 @@ +import{_ as V,c as A,a2 as i,j as a,a as s,o as g}from"./chunks/framework.BnE-uSbk.js";const w={mounted(){const p=new Map;function v(l){const e=l.querySelectorAll("a[href]");for(const r of e){const n=r.href,y=p.get(n)??new Set;y.add(r),p.set(n,y)}for(const r of e)r.onmouseover=function(){for(const n of p.get(this.href))n.classList.add("hover-highlight")},r.onmouseout=function(){for(const n of p.get(this.href))n.classList.remove("hover-highlight")}}function x(l){return decodeURIComponent(atob(l).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const f=(l=>{const e={};return(...r)=>{const n=JSON.stringify(r);return e[n]=e[n]||l(...r)}})(x);class d{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(r=>r!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let r=this.list.find(n=>n.userCreatedFrom===e);this.dismissIfNotUsed(r)}createHoverFor(e,r,n){let y=this.list.find(o=>o.userCreatedFrom===e);if(y&&y.userClicked)return y;let M=[];const C=this.list.filter(o=>{if(this.allowAutoDismissal(o))return M.push(o),!1;const c=o.userCreatedFrom,m=e;let h=m;for(;h;){if(h===c)return!0;h=h.parentElement}for(h=c;h;){if(h===m)return!0;h=h.parentElement}return!1});M.forEach(o=>this.dismiss(o));let t=document.createElement("div");t.userCreatedFrom=e,t.innerHTML="×"+f(r),t.classList.add("AyaTooltipPopup"),v(t);let b=this;if(t.handleEvent=function(o){if(o.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let c=this.children[0];if(!c)return;let m=this;c.style.visibility="visible",c.addEventListener("click",h=>b.dismiss(m))}o.type==="mouseover"&&(this.userIsThinking=!0),o.type==="mouseout"&&(this.userIsThinking=!1,b.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),n.appendChild(t),t.style.left=`${e.offsetLeft}px`,C.length===0){const o=e.getBoundingClientRect(),c=t.getBoundingClientRect();o.bottom+c.height+30>window.innerHeight?t.style.top=`calc(${e.offsetTop-c.height+8}px - 3em)`:t.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const o=Math.max(...C.map(c=>c.offsetTop+c.offsetHeight));t.style.top=`${o+8}px`}return this.list.push(t),t}}let T=new d;function u(l){return function(){let e=this;const r=e.getAttribute("data-tooltip-text");r&&(l?T.createHoverFor(e,r,document.body):T.fireAutoDismissalFor(e))}}v(document);{let l=document.getElementsByClassName("aya-tooltip");for(let e=0;eType Theory in Type Theory using Quotient Inductive Types

Link to the paper.

Here's a self-contained full definition.

Prelude

',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-I",class:"aya-hover","aya-hover-text":"ISet",href:"#Mian-I"},[a("span",{class:"Primitive"},"I")]),s(` +`),a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-Path",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(` +`),a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-coe",class:"aya-hover","aya-hover-text":"A r → A s",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(` + +`),a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v1607792885",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(),a("a",{id:"v6444850",href:"#v6444850"},[a("span",{class:"Generalized"},"B")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3d",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(" ("),a("a",{id:"v2102368942",class:"aya-hover","aya-hover-text":"A",href:"#v2102368942"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v120478350",class:"aya-hover","aya-hover-text":"A",href:"#v120478350"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v648936749",href:"#v648936749"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2102368942"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v120478350"},[a("span",{class:"LocalVar"},"b")]),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-refl",class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(" {"),a("a",{id:"v1014486152",class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"\\"),a("a",{id:"v859236022",href:"#v859236022"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pmap",class:"aya-hover","aya-hover-text":"f a = f b",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{id:"v1446983876",class:"aya-hover","aya-hover-text":"A → B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v6444850"},[a("span",{class:"Generalized"},"B")]),s(") {"),a("a",{id:"v1412601264",class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1413623320",class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1042790962",class:"aya-hover","aya-hover-text":"a = b",href:"#v1042790962"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(" ⇒ "),a("span",{class:"Keyword"},"\\"),a("a",{id:"v2084559714",href:"#v2084559714"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042790962"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v2084559714"},[a("span",{class:"LocalVar"},"i")]),s(`) + +`),a("span",{class:"Comment"},"// Copied from Carlo Angiuli's thesis"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-transport",class:"aya-hover","aya-hover-text":"B b",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" {"),a("a",{id:"v480490520",class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1489743810",class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v540325452",class:"aya-hover","aya-hover-text":"A → Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("span",{class:"Keyword"},"Type"),s(") ("),a("a",{id:"v1959910454",class:"aya-hover","aya-hover-text":"a = b",href:"#v1959910454"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(") ("),a("a",{id:"v1902237905",class:"aya-hover","aya-hover-text":"B a",href:"#v1902237905"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(` + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"B b",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(" 0 1 ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v1842853283",href:"#v1842853283"},[a("span",{class:"LocalVar"},"y")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1959910454"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1842853283"},[a("span",{class:"LocalVar"},"y")]),s(")) "),a("a",{class:"aya-hover","aya-hover-text":"B a",href:"#v1902237905"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),a("h2",{id:"context",tabindex:"-1"},[s("Context "),a("a",{class:"header-anchor",href:"#context","aria-label":'Permalink to "Context"'},"​")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Con",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{id:"Mian-Con-•",class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(` +| `),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-Con-▷",class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" ("),a("a",{id:"v1250142026",class:"aya-hover","aya-hover-text":"Con",href:"#v1250142026"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1250142026"},[a("span",{class:"LocalVar"},"Γ")]),s(")")]),s(` +`)],-1),i('

An instance of the type Con corresponds to the ΓΓ in the judgment Γ ctxΓ~\\text{ctx}, and these constructors correspond (on-the-nose) to:

 ctxΓ ctxΓA typeΓA ctx\\cfrac{}{·~\\text{ctx}} \\quad \\cfrac{Γ~\\text{ctx} \\quad Γ⊢A~\\text{type}}{Γ \\vartriangleright A~\\text{ctx}}

It uses the judgment ΓA typeΓ⊢A~\\text{type}, which is defined below.

Types

',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Ty",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{id:"v426394307",class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{id:"Mian-Ty-U",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(` +| `),a("a",{id:"Mian-Ty-Π",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{id:"v750029115",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v750029115"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(") ("),a("a",{id:"v384515747",class:"aya-hover","aya-hover-text":"Ty (Γ ▷ A)",href:"#v384515747"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v750029115"},[a("span",{class:"LocalVar"},"A")]),s(`)) +| `),a("a",{id:"Mian-Ty-El",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(" ("),a("a",{id:"v1182908789",class:"aya-hover","aya-hover-text":"Tm Γ U",href:"#v1182908789"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(`) +| `),a("a",{id:"Mian-Ty-Subst",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" {"),a("a",{id:"v1873091796",class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{id:"v1896622931",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1896622931"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(`) +| `),a("a",{id:"Mian-Ty-SubId",class:"aya-hover","aya-hover-text":"Subst A (id refl) = A",href:"#Mian-Ty-SubId"},[a("span",{class:"Constructor"},"SubId")]),s(" {"),a("a",{id:"v216856121",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Γ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ = Γ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(` +| `),a("a",{id:"Mian-Ty-SubAss",class:"aya-hover","aya-hover-text":"Subst (Subst A δ) θ = Subst A (δ ∘ θ)",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" {"),a("a",{id:"v1040776996",class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{id:"v1293680734",class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v138817329",class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v609656250",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v1574877131",class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s(`} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ A θ δ << ?Δ Γ Δ Θ A θ δ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(`) +| `),a("a",{id:"Mian-Ty-SubU",class:"aya-hover","aya-hover-text":"Subst U δ = U",href:"#Mian-Ty-SubU"},[a("span",{class:"Constructor"},"SubU")]),s(" {"),a("a",{id:"v1241529534",class:"aya-hover","aya-hover-text":"Con",href:"#v1241529534"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1082309267",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1082309267"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1241529534"},[a("span",{class:"LocalVar"},"Δ")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1082309267"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(` +| `),a("a",{id:"Mian-Ty-SubEl",class:"aya-hover","aya-hover-text":"Subst (El a) δ = El (transport (Tm Γ) (SubU δ) (sub a))",href:"#Mian-Ty-SubEl"},[a("span",{class:"Constructor"},"SubEl")]),s(" {"),a("a",{id:"v398457879",class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1850954068",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v1530446316",class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(`} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ U",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y0MjYzOTQzMDciPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpM8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → Ty Γ",href:"#Mian-Ty-SubU"},[a("span",{class:"Constructor"},"SubU")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ (Subst U δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(`)) +| `),a("a",{id:"Mian-Ty-SubΠ",class:"aya-hover","aya-hover-text":"Subst (Π A B) σ = Π (Subst A σ) (Subst B (ext σ A))",href:"#Mian-Ty-SubΠ"},[a("span",{class:"Constructor"},"SubΠ")]),s(" {"),a("a",{id:"v1899600175",class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1766869737",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(") {"),a("a",{id:"v947553027",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v684566052",class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(`)} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ ▷ Subst A σ)",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A σ) << (Δ ▷ A)",href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s("))")]),s(` +`)],-1),a("p",null,[s("The "),a("code",{class:"Aya"},[a("a",{href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")])]),s(" operator corresponds to the ↑ operator in the paper:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-ext",class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Δ ▷ A)",href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")]),s(" {"),a("a",{id:"v201719260",class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{id:"v635371680",class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1293226111",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{id:"v2068598972",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ δ A << ?Δ Γ Δ δ A",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << Γ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Γ ▷ Subst A δ)",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) = (Γ ▷ Subst A δ)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?_ Γ Δ δ A << (?Δ' Γ Δ δ A ▷ ?A Γ Δ δ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Γ ▷ Subst A δ) (Subst A (δ ∘ π₁ (id refl)))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ ▷ Subst A δ) → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YyMDE3MTkyNjAiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpM8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1Db24t4pa3Ij48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPuKWtzwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj48YSBocmVmPSIjTWlhbi1UeS1TdWJzdCI+PHNwYW4gY2xhc3M9IkNvbnN0cnVjdG9yIj5TdWJzdDwvc3Bhbj48L2E+IDxhIGhyZWY9IiN2MjA2ODU5ODk3MiI+PHNwYW4gY2xhc3M9IkxvY2FsVmFyIj5BPC9zcGFuPjwvYT4gPGEgaHJlZj0iI3YxMjkzMjI2MTExIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs60PC9zcGFuPjwvYT48L3NwYW4+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Subst (Subst A δ) (π₁ (id refl)) = Subst A (δ ∘ π₁ (id refl))",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm (Γ ▷ Subst A δ) (Subst (Subst A δ) (π₁ (id refl)))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Γ ▷ Subst A δ)",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) = (Γ ▷ Subst A δ)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s("))")]),s(` +`)],-1),i('

An instance of the type Ty Γ corresponds to the AA in the judgment ΓA typeΓ⊢A~\\text{type}. The constructor U corresponds to the following rule:

ΓU type\\cfrac{}{Γ⊢\\mathcal{U}~\\text{type}}

I believe you already know how Π works. The constructor El computes the type corresponds to an instance of U:

ΓA:UΓEl(A) type\\cfrac{Γ⊢A:\\mathcal{U}}{Γ⊢\\text{El}(A)~\\text{type}}

Note that it uses the judgment ΓA:UΓ⊢A:\\mathcal{U}, which is defined below.

Substitution objects

',6),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3c3c",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(" ("),a("a",{id:"v91912419",class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{id:"v1076641925",class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` + `),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("span",{class:"Keyword"},"looser"),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-ε",class:"aya-hover","aya-hover-text":"_ << •",href:"#Mian-3c3c-ε"},[a("span",{class:"Constructor"},"ε")]),s(` +| _, `),a("a",{id:"v361268035",class:"aya-hover","aya-hover-text":"Con",href:"#v361268035"},[a("span",{class:"LocalVar"},"Δ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v871160466",class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v871160466"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-3c3c-∷",class:"aya-hover","aya-hover-text":"_ << (Δ' ▷ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(" ("),a("a",{id:"v1848125895",class:"aya-hover","aya-hover-text":"_ << Δ'",href:"#v1848125895"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v361268035"},[a("span",{class:"LocalVar"},"Δ'")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v871160466"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ'",href:"#v1848125895"},[a("span",{class:"LocalVar"},"δ")]),s(")) "),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(` +| `),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3c3c-∘",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(" {"),a("a",{id:"v572145572",class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(") "),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (Δ' ▷ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(` +| `),a("a",{id:"Mian-3c3c-π₁",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" {"),a("a",{id:"v223693919",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v223693919"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v223693919"},[a("span",{class:"LocalVar"},"A")]),s(`) +| `),a("a",{id:"Mian-3c3c-id",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(`) +| `),a("a",{id:"Mian-3c3c-idl•",class:"aya-hover","aya-hover-text":"(id refl ∘ s) = s",href:"#Mian-3c3c-idl•"},[a("span",{class:"Constructor"},"idl•")]),s(" {"),a("a",{id:"v1304589447",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Δ << Δ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Δ = Δ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ s << ?Δ Γ Δ s",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(` +| `),a("a",{id:"Mian-3c3c-idr•",class:"aya-hover","aya-hover-text":"(s ∘ id refl) = s",href:"#Mian-3c3c-idr•"},[a("span",{class:"Constructor"},"idr•")]),s(" {"),a("a",{id:"v379303133",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ s << ?Δ Γ Δ s",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Γ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ = Γ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(` +| `),a("a",{id:"Mian-3c3c-ass",class:"aya-hover","aya-hover-text":"((σ ∘ δ) ∘ ν) = (σ ∘ (δ ∘ ν))",href:"#Mian-3c3c-ass"},[a("span",{class:"Constructor"},"ass")]),s(" {"),a("a",{id:"v1571798597",class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{id:"v575935098",class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1367937032",class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s("} {"),a("a",{id:"v798310141",class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v258535644",class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(`} + : (`),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(`) +| `),a("a",{id:"Mian-3c3c-π₁β",class:"aya-hover","aya-hover-text":"π₁ (δ ∷ t) = δ",href:"#Mian-3c3c-π₁β"},[a("span",{class:"Constructor"},"π₁β")]),s(" {"),a("a",{id:"v1179792105",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v2038522556",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2038522556"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} ("),a("a",{id:"v1954985045",class:"aya-hover","aya-hover-text":"Tm Γ (Subst A δ)",href:"#v1954985045"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2038522556"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(")) : "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ Γ Δ δ A t << (?Δ' Γ Δ δ A t ▷ ?A Γ Δ δ A t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ (Subst A δ)",href:"#v1954985045"},[a("span",{class:"LocalVar"},"t")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(` +| _, _ `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" _ ⇒ "),a("a",{id:"Mian-3c3c-πη",class:"aya-hover","aya-hover-text":"(π₁ δ ∷ π₂ δ) = δ",href:"#Mian-3c3c-πη"},[a("span",{class:"Constructor"},"πη")]),s(" {"),a("a",{id:"v1865859824",class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : ("),a("a",{class:"aya-hover","aya-hover-text":"_ << _",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ _ _ _ δ << (?Δ' _ _ _ δ ▷ ?A _ _ _ δ)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst _ (π₁ δ))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(` +| _, `),a("a",{id:"v800088638",class:"aya-hover","aya-hover-text":"Con",href:"#v800088638"},[a("span",{class:"LocalVar"},"Δ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v1236444285",class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v1236444285"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-∷∘",class:"aya-hover","aya-hover-text":"((σ ∷ t) ∘ δ) = ((σ ∘ δ) ∷ transport (Tm _) SubAss (sub t))",href:"#Mian-3c3c-∷∘"},[a("span",{class:"Constructor"},"∷∘")]),s(" {"),a("a",{id:"v1096485705",class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1834361038",class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v800088638"},[a("span",{class:"LocalVar"},"Δ'")]),s("} {"),a("a",{id:"v823914581",class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v566113173",class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v1236444285"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(`)} + : (`),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ Δ' A _ Θ σ δ t << (?Δ' Δ' A _ Θ σ δ t ▷ ?A Δ' A _ Θ σ δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?Γ Δ' A _ Θ σ δ t << ?Δ Δ' A _ Θ σ δ t",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Δ' A _ Θ σ δ t << ?Δ Δ' A _ Θ σ δ t",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?_ Δ' A _ Θ σ δ t << (?Δ' Δ' A _ Θ σ δ t ▷ ?A Δ' A _ Θ σ δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst A (σ ∘ δ))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxNTQxNTI1NjY4Ij48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Subst (Subst A σ) δ = Subst A (σ ∘ δ)",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst (Subst A σ) δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-εη",class:"aya-hover","aya-hover-text":"δ = ε",href:"#Mian-3c3c-εη"},[a("span",{class:"Constructor"},"εη")]),s(" {"),a("a",{id:"v37981645",class:"aya-hover","aya-hover-text":"_ << •",href:"#v37981645"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"_ << •",href:"#v37981645"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << •",href:"#Mian-3c3c-ε"},[a("span",{class:"Constructor"},"ε")])]),s(` +`)],-1),i('

An instance of type Γ << Δ corresponds to the σσ in the substitution typing Γσ:ΔΓ ⊢ σ : Δ.

Terms

',2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Tm",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{id:"v1345483087",class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{id:"v105579928",class:"aya-hover","aya-hover-text":"Ty _",href:"#v105579928"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v418958713",class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v418958713"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-λ",class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v105579928"},[a("span",{class:"LocalVar"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v418958713"},[a("span",{class:"LocalVar"},"B")]),s(`) +| `),a("a",{id:"v238762799",class:"aya-hover","aya-hover-text":"Con",href:"#v238762799"},[a("span",{class:"LocalVar"},"Γ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(", "),a("a",{id:"v1824837049",class:"aya-hover","aya-hover-text":"Ty (Γ' ▷ A)",href:"#v1824837049"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-app",class:"aya-hover","aya-hover-text":"Tm (Γ' ▷ A) B",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v238762799"},[a("span",{class:"LocalVar"},"Γ'")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ' ▷ A)",href:"#v1824837049"},[a("span",{class:"LocalVar"},"B")]),s(`)) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v685558284",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v685558284"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v1171802656",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1171802656"},[a("span",{class:"LocalVar"},"δ")]),s(" ⇒ "),a("a",{id:"Mian-Tm-sub",class:"aya-hover","aya-hover-text":"Tm _ (Subst A δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxNTE1ODMzOTUwIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs6UPC9zcGFuPjwvYT48L2NvZGU+CjwvcHJlPgo="},"_"),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v685558284"},[a("span",{class:"LocalVar"},"A")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v859654796",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v859654796"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(),a("a",{id:"v1440621772",class:"aya-hover","aya-hover-text":"_ << (Δ ▷ B)",href:"#v1440621772"},[a("span",{class:"LocalVar"},"δ")]),s(") ⇒ "),a("a",{id:"Mian-Tm-π₂",class:"aya-hover","aya-hover-text":"Tm _ (Subst A (π₁ δ))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y4MjE1NzYzOTQiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpQ8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v859654796"},[a("span",{class:"LocalVar"},"A")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v442199874",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v442199874"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{id:"v1345900725",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1345900725"},[a("span",{class:"LocalVar"},"δ")]),s(),a("span",{class:"Keyword"},"as"),s(),a("a",{id:"v839998248",class:"aya-hover","aya-hover-text":"Ty _",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-π₂β",class:"aya-hover","aya-hover-text":"coe 0 1 (\\ p0 ⇒ Tm _ (Subst B (π₁β t p0))) (π₂ (δ ∷ t)) = t",href:"#Mian-Tm-π₂β"},[a("span",{class:"Constructor"},"π₂β")]),s(" {"),a("a",{id:"v2107577743",class:"aya-hover","aya-hover-text":"Con",href:"#v2107577743"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1173346575",class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")]),s(`) + : `),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y3MTg1NzEwOTEiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+Xzwvc3Bhbj48L2E+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Subst B (π₁ (δ ∷ t)) = Subst B δ",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(_ << Δ) → Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v442199874"},[a("span",{class:"LocalVar"},"B")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → _ << Δ",href:"#Mian-3c3c-π₁β"},[a("span",{class:"Constructor"},"π₁β")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(")) ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B (π₁ (δ ∷ t)))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1345900725"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ B δ _ Δ Δ t << (?Δ' B δ _ Δ Δ t ▷ ?A B δ _ Δ Δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(")) "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(` +| _ `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" _, "),a("a",{id:"v405896924",class:"aya-hover","aya-hover-text":"Ty (_ ▷ _)",href:"#v405896924"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-Πβ",class:"aya-hover","aya-hover-text":"app (λ f) = f",href:"#Mian-Tm-Πβ"},[a("span",{class:"Constructor"},"Πβ")]),s(" ("),a("a",{id:"v1267105885",class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ _)",href:"#v405896924"},[a("span",{class:"LocalVar"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ A)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" _ _ "),a("span",{class:"Keyword"},"as"),s(),a("a",{id:"v400103862",class:"aya-hover","aya-hover-text":"Ty _",href:"#v400103862"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-Πη",class:"aya-hover","aya-hover-text":"λ (app f) = f",href:"#Mian-Tm-Πη"},[a("span",{class:"Constructor"},"Πη")]),s(" ("),a("a",{id:"v573200870",class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v400103862"},[a("span",{class:"LocalVar"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) _",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{id:"v1058876963",class:"aya-hover","aya-hover-text":"Ty _",href:"#v1058876963"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v1399701152",class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v1399701152"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-subλ",class:"aya-hover","aya-hover-text":`coe 0 1 (\\ p0 ⇒ Tm _ (fording p0)) (coe 0 1 (\\ p0 ⇒ Tm _ (SubΠ σ p0)) (sub (λ t))) += coe 0 1 (\\ p0 ⇒ Tm _ (fording p0)) (λ (sub t))`,href:"#Mian-Tm-subλ"},[a("span",{class:"Constructor"},"subλ")]),s(" {"),a("a",{id:"v2003463579",class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v567294307",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v527829831",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v418179060",class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(`)} + (`),a("a",{id:"v777457133",class:"aya-hover","aya-hover-text":`Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) SubAss +(π₂ (id refl)))) = Π A B`,href:"#v777457133"},[a("span",{class:"LocalVar"},"fording")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ Subst A' σ)",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+KDxhIGhyZWY9IiN2NTY3Mjk0MzA3Ij48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs+DPC9zcGFuPjwvYT4gPGEgaHJlZj0iI01pYW4tM2MzYy3iiJgiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+4oiYPC9zcGFuPjwvYT4gPHNwYW4gY2xhc3M9IkNhbGwiPjxhIGhyZWY9IiNNaWFuLTNjM2Mtz4DigoEiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+z4DigoE8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLTNjM2MtaWQiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+aWQ8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1yZWZsIj48c3BhbiBjbGFzcz0iRm4iPnJlZmw8L3NwYW4+PC9hPik8L3NwYW4+PC9zcGFuPikgPGEgaHJlZj0iI01pYW4tM2MzYy3iiLciPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+4oi3PC9zcGFuPjwvYT4gPHNwYW4gY2xhc3M9IkNhbGwiPjxhIGhyZWY9IiNNaWFuLXRyYW5zcG9ydCI+PHNwYW4gY2xhc3M9IkZuIj50cmFuc3BvcnQ8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLVRtIj48c3BhbiBjbGFzcz0iRGF0YSI+VG08L3NwYW4+PC9hPiAoPGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1Db24t4pa3Ij48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPuKWtzwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj48YSBocmVmPSIjTWlhbi1UeS1TdWJzdCI+PHNwYW4gY2xhc3M9IkNvbnN0cnVjdG9yIj5TdWJzdDwvc3Bhbj48L2E+IDxhIGhyZWY9IiN2NTI3ODI5ODMxIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPkEnPC9zcGFuPjwvYT4gPGEgaHJlZj0iI3Y1NjcyOTQzMDciPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+z4M8L3NwYW4+PC9hPjwvc3Bhbj4pKTwvc3Bhbj4gPGEgaHJlZj0iI01pYW4tVHktU3ViQXNzIj48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPlN1YkFzczwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj4oPGEgaHJlZj0iI01pYW4tVG0tz4DigoIiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+z4DigoI8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLTNjM2MtaWQiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+aWQ8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1yZWZsIj48c3BhbiBjbGFzcz0iRm4iPnJlZmw8L3NwYW4+PC9hPik8L3NwYW4+KTwvc3Bhbj48L3NwYW4+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v1058876963"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v1399701152"},[a("span",{class:"LocalVar"},"B")]),s(") {"),a("a",{id:"v193388045",class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(`} + : `),a("span",{class:"Keyword"},"let"),s(),a("a",{id:"v394785440",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" := "),a("a",{class:"aya-hover","aya-hover-text":`Tm _ (Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' +σ)) SubAss (π₂ (id refl))))) → Tm _ (Π A B)`,href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":`Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) SubAss +(π₂ (id refl)))) = Π A B`,href:"#v777457133"},[a("span",{class:"LocalVar"},"fording")]),s(` + `),a("span",{class:"Keyword"},"in"),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π (Subst A' σ) (Subst B' (ext σ A')))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → Ty _",href:"#Mian-Ty-SubΠ"},[a("span",{class:"Constructor"},"SubΠ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst (Π A' B') σ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ (Π A' B')",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s(`))) + `),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":`Tm _ (Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' +σ)) SubAss (π₂ (id refl)))))`,href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":`Tm (_ ▷ Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) +SubAss (π₂ (id refl))))`,href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s("))")]),s(` +`)],-1),i('

An instance of type Tm Γ A corresponds to the tt in the judgment Γt:AΓ⊢t:A.

',1)]))}const j=V(w,[["render",S]]);export{P as __pageData,j as default}; diff --git a/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.lean.js b/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.lean.js new file mode 100644 index 0000000..12515bc --- /dev/null +++ b/assets/blog_tt-in-tt-qiit.md.BjrgqciZ.lean.js @@ -0,0 +1,67 @@ +import{_ as V,c as A,a2 as i,j as a,a as s,o as g}from"./chunks/framework.BnE-uSbk.js";const w={mounted(){const p=new Map;function v(l){const e=l.querySelectorAll("a[href]");for(const r of e){const n=r.href,y=p.get(n)??new Set;y.add(r),p.set(n,y)}for(const r of e)r.onmouseover=function(){for(const n of p.get(this.href))n.classList.add("hover-highlight")},r.onmouseout=function(){for(const n of p.get(this.href))n.classList.remove("hover-highlight")}}function x(l){return decodeURIComponent(atob(l).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const f=(l=>{const e={};return(...r)=>{const n=JSON.stringify(r);return e[n]=e[n]||l(...r)}})(x);class d{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(r=>r!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let r=this.list.find(n=>n.userCreatedFrom===e);this.dismissIfNotUsed(r)}createHoverFor(e,r,n){let y=this.list.find(o=>o.userCreatedFrom===e);if(y&&y.userClicked)return y;let M=[];const C=this.list.filter(o=>{if(this.allowAutoDismissal(o))return M.push(o),!1;const c=o.userCreatedFrom,m=e;let h=m;for(;h;){if(h===c)return!0;h=h.parentElement}for(h=c;h;){if(h===m)return!0;h=h.parentElement}return!1});M.forEach(o=>this.dismiss(o));let t=document.createElement("div");t.userCreatedFrom=e,t.innerHTML="×"+f(r),t.classList.add("AyaTooltipPopup"),v(t);let b=this;if(t.handleEvent=function(o){if(o.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let c=this.children[0];if(!c)return;let m=this;c.style.visibility="visible",c.addEventListener("click",h=>b.dismiss(m))}o.type==="mouseover"&&(this.userIsThinking=!0),o.type==="mouseout"&&(this.userIsThinking=!1,b.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),n.appendChild(t),t.style.left=`${e.offsetLeft}px`,C.length===0){const o=e.getBoundingClientRect(),c=t.getBoundingClientRect();o.bottom+c.height+30>window.innerHeight?t.style.top=`calc(${e.offsetTop-c.height+8}px - 3em)`:t.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const o=Math.max(...C.map(c=>c.offsetTop+c.offsetHeight));t.style.top=`${o+8}px`}return this.list.push(t),t}}let T=new d;function u(l){return function(){let e=this;const r=e.getAttribute("data-tooltip-text");r&&(l?T.createHoverFor(e,r,document.body):T.fireAutoDismissalFor(e))}}v(document);{let l=document.getElementsByClassName("aya-tooltip");for(let e=0;eType Theory in Type Theory using Quotient Inductive Types

Link to the paper.

Here's a self-contained full definition.

Prelude

',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-I",class:"aya-hover","aya-hover-text":"ISet",href:"#Mian-I"},[a("span",{class:"Primitive"},"I")]),s(` +`),a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-Path",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(` +`),a("span",{class:"Keyword"},"prim"),s(),a("a",{id:"Mian-coe",class:"aya-hover","aya-hover-text":"A r → A s",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(` + +`),a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v1607792885",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(),a("a",{id:"v6444850",href:"#v6444850"},[a("span",{class:"Generalized"},"B")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3d",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(" ("),a("a",{id:"v2102368942",class:"aya-hover","aya-hover-text":"A",href:"#v2102368942"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v120478350",class:"aya-hover","aya-hover-text":"A",href:"#v120478350"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v648936749",href:"#v648936749"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2102368942"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v120478350"},[a("span",{class:"LocalVar"},"b")]),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-refl",class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(" {"),a("a",{id:"v1014486152",class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"\\"),a("a",{id:"v859236022",href:"#v859236022"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1014486152"},[a("span",{class:"LocalVar"},"a")]),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pmap",class:"aya-hover","aya-hover-text":"f a = f b",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{id:"v1446983876",class:"aya-hover","aya-hover-text":"A → B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v6444850"},[a("span",{class:"Generalized"},"B")]),s(") {"),a("a",{id:"v1412601264",class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1413623320",class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1042790962",class:"aya-hover","aya-hover-text":"a = b",href:"#v1042790962"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1412601264"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1413623320"},[a("span",{class:"LocalVar"},"b")]),s(" ⇒ "),a("span",{class:"Keyword"},"\\"),a("a",{id:"v2084559714",href:"#v2084559714"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1446983876"},[a("span",{class:"LocalVar"},"f")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042790962"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v2084559714"},[a("span",{class:"LocalVar"},"i")]),s(`) + +`),a("span",{class:"Comment"},"// Copied from Carlo Angiuli's thesis"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-transport",class:"aya-hover","aya-hover-text":"B b",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" {"),a("a",{id:"v480490520",class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1489743810",class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v540325452",class:"aya-hover","aya-hover-text":"A → Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1607792885"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("span",{class:"Keyword"},"Type"),s(") ("),a("a",{id:"v1959910454",class:"aya-hover","aya-hover-text":"a = b",href:"#v1959910454"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(") ("),a("a",{id:"v1902237905",class:"aya-hover","aya-hover-text":"B a",href:"#v1902237905"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v480490520"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1489743810"},[a("span",{class:"LocalVar"},"b")]),s(` + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"B b",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(" 0 1 ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v1842853283",href:"#v1842853283"},[a("span",{class:"LocalVar"},"y")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v540325452"},[a("span",{class:"LocalVar"},"B")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1959910454"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1842853283"},[a("span",{class:"LocalVar"},"y")]),s(")) "),a("a",{class:"aya-hover","aya-hover-text":"B a",href:"#v1902237905"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),a("h2",{id:"context",tabindex:"-1"},[s("Context "),a("a",{class:"header-anchor",href:"#context","aria-label":'Permalink to "Context"'},"​")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Con",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{id:"Mian-Con-•",class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(` +| `),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-Con-▷",class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" ("),a("a",{id:"v1250142026",class:"aya-hover","aya-hover-text":"Con",href:"#v1250142026"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1250142026"},[a("span",{class:"LocalVar"},"Γ")]),s(")")]),s(` +`)],-1),i('

An instance of the type Con corresponds to the ΓΓ in the judgment Γ ctxΓ~\\text{ctx}, and these constructors correspond (on-the-nose) to:

 ctxΓ ctxΓA typeΓA ctx\\cfrac{}{·~\\text{ctx}} \\quad \\cfrac{Γ~\\text{ctx} \\quad Γ⊢A~\\text{type}}{Γ \\vartriangleright A~\\text{ctx}}

It uses the judgment ΓA typeΓ⊢A~\\text{type}, which is defined below.

Types

',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Ty",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{id:"v426394307",class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{id:"Mian-Ty-U",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(` +| `),a("a",{id:"Mian-Ty-Π",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{id:"v750029115",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v750029115"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(") ("),a("a",{id:"v384515747",class:"aya-hover","aya-hover-text":"Ty (Γ ▷ A)",href:"#v384515747"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v750029115"},[a("span",{class:"LocalVar"},"A")]),s(`)) +| `),a("a",{id:"Mian-Ty-El",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(" ("),a("a",{id:"v1182908789",class:"aya-hover","aya-hover-text":"Tm Γ U",href:"#v1182908789"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(`) +| `),a("a",{id:"Mian-Ty-Subst",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" {"),a("a",{id:"v1873091796",class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{id:"v1896622931",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1896622931"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1873091796"},[a("span",{class:"LocalVar"},"Δ")]),s(`) +| `),a("a",{id:"Mian-Ty-SubId",class:"aya-hover","aya-hover-text":"Subst A (id refl) = A",href:"#Mian-Ty-SubId"},[a("span",{class:"Constructor"},"SubId")]),s(" {"),a("a",{id:"v216856121",class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Γ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ = Γ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#v216856121"},[a("span",{class:"LocalVar"},"A")]),s(` +| `),a("a",{id:"Mian-Ty-SubAss",class:"aya-hover","aya-hover-text":"Subst (Subst A δ) θ = Subst A (δ ∘ θ)",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" {"),a("a",{id:"v1040776996",class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{id:"v1293680734",class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v138817329",class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v609656250",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v1574877131",class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1040776996"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1293680734"},[a("span",{class:"LocalVar"},"Θ")]),s(`} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#v138817329"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Δ << Θ",href:"#v1574877131"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ A θ δ << ?Δ Γ Δ Θ A θ δ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v609656250"},[a("span",{class:"LocalVar"},"θ")]),s(`) +| `),a("a",{id:"Mian-Ty-SubU",class:"aya-hover","aya-hover-text":"Subst U δ = U",href:"#Mian-Ty-SubU"},[a("span",{class:"Constructor"},"SubU")]),s(" {"),a("a",{id:"v1241529534",class:"aya-hover","aya-hover-text":"Con",href:"#v1241529534"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1082309267",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1082309267"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1241529534"},[a("span",{class:"LocalVar"},"Δ")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1082309267"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(` +| `),a("a",{id:"Mian-Ty-SubEl",class:"aya-hover","aya-hover-text":"Subst (El a) δ = El (transport (Tm Γ) (SubU δ) (sub a))",href:"#Mian-Ty-SubEl"},[a("span",{class:"Constructor"},"SubEl")]),s(" {"),a("a",{id:"v398457879",class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1850954068",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v1530446316",class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v398457879"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-U"},[a("span",{class:"Constructor"},"U")]),s(`} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-El"},[a("span",{class:"Constructor"},"El")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ U",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y0MjYzOTQzMDciPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpM8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → Ty Γ",href:"#Mian-Ty-SubU"},[a("span",{class:"Constructor"},"SubU")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1850954068"},[a("span",{class:"LocalVar"},"δ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ (Subst U δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ U",href:"#v1530446316"},[a("span",{class:"LocalVar"},"a")]),s(`)) +| `),a("a",{id:"Mian-Ty-SubΠ",class:"aya-hover","aya-hover-text":"Subst (Π A B) σ = Π (Subst A σ) (Subst B (ext σ A))",href:"#Mian-Ty-SubΠ"},[a("span",{class:"Constructor"},"SubΠ")]),s(" {"),a("a",{id:"v1899600175",class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1766869737",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v426394307"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(") {"),a("a",{id:"v947553027",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v684566052",class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1899600175"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(`)} + : `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ ▷ Subst A σ)",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A)",href:"#v684566052"},[a("span",{class:"LocalVar"},"B")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A σ) << (Δ ▷ A)",href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1766869737"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v947553027"},[a("span",{class:"LocalVar"},"A")]),s("))")]),s(` +`)],-1),a("p",null,[s("The "),a("code",{class:"Aya"},[a("a",{href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")])]),s(" operator corresponds to the ↑ operator in the paper:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-ext",class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Δ ▷ A)",href:"#Mian-ext"},[a("span",{class:"Fn"},"ext")]),s(" {"),a("a",{id:"v201719260",class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{id:"v635371680",class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1293226111",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{id:"v2068598972",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v201719260"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v635371680"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2068598972"},[a("span",{class:"LocalVar"},"A")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1293226111"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ δ A << ?Δ Γ Δ δ A",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << Γ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Γ ▷ Subst A δ)",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) = (Γ ▷ Subst A δ)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?_ Γ Δ δ A << (?Δ' Γ Δ δ A ▷ ?A Γ Δ δ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Γ ▷ Subst A δ) (Subst A (δ ∘ π₁ (id refl)))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ ▷ Subst A δ) → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YyMDE3MTkyNjAiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpM8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1Db24t4pa3Ij48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPuKWtzwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj48YSBocmVmPSIjTWlhbi1UeS1TdWJzdCI+PHNwYW4gY2xhc3M9IkNvbnN0cnVjdG9yIj5TdWJzdDwvc3Bhbj48L2E+IDxhIGhyZWY9IiN2MjA2ODU5ODk3MiI+PHNwYW4gY2xhc3M9IkxvY2FsVmFyIj5BPC9zcGFuPjwvYT4gPGEgaHJlZj0iI3YxMjkzMjI2MTExIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs60PC9zcGFuPjwvYT48L3NwYW4+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Subst (Subst A δ) (π₁ (id refl)) = Subst A (δ ∘ π₁ (id refl))",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm (Γ ▷ Subst A δ) (Subst (Subst A δ) (π₁ (id refl)))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) << (Γ ▷ Subst A δ)",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"(Γ ▷ Subst A δ) = (Γ ▷ Subst A δ)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s("))")]),s(` +`)],-1),i('

An instance of the type Ty Γ corresponds to the AA in the judgment ΓA typeΓ⊢A~\\text{type}. The constructor U corresponds to the following rule:

ΓU type\\cfrac{}{Γ⊢\\mathcal{U}~\\text{type}}

I believe you already know how Π works. The constructor El computes the type corresponds to an instance of U:

ΓA:UΓEl(A) type\\cfrac{Γ⊢A:\\mathcal{U}}{Γ⊢\\text{El}(A)~\\text{type}}

Note that it uses the judgment ΓA:UΓ⊢A:\\mathcal{U}, which is defined below.

Substitution objects

',6),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3c3c",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(" ("),a("a",{id:"v91912419",class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{id:"v1076641925",class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` + `),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("span",{class:"Keyword"},"looser"),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-ε",class:"aya-hover","aya-hover-text":"_ << •",href:"#Mian-3c3c-ε"},[a("span",{class:"Constructor"},"ε")]),s(` +| _, `),a("a",{id:"v361268035",class:"aya-hover","aya-hover-text":"Con",href:"#v361268035"},[a("span",{class:"LocalVar"},"Δ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v871160466",class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v871160466"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-3c3c-∷",class:"aya-hover","aya-hover-text":"_ << (Δ' ▷ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(" ("),a("a",{id:"v1848125895",class:"aya-hover","aya-hover-text":"_ << Δ'",href:"#v1848125895"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v361268035"},[a("span",{class:"LocalVar"},"Δ'")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v871160466"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ'",href:"#v1848125895"},[a("span",{class:"LocalVar"},"δ")]),s(")) "),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(` +| `),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3c3c-∘",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(" {"),a("a",{id:"v572145572",class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v572145572"},[a("span",{class:"LocalVar"},"Θ")]),s(") "),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (Δ' ▷ A)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(` +| `),a("a",{id:"Mian-3c3c-π₁",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" {"),a("a",{id:"v223693919",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v223693919"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v223693919"},[a("span",{class:"LocalVar"},"A")]),s(`) +| `),a("a",{id:"Mian-3c3c-id",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(`) +| `),a("a",{id:"Mian-3c3c-idl•",class:"aya-hover","aya-hover-text":"(id refl ∘ s) = s",href:"#Mian-3c3c-idl•"},[a("span",{class:"Constructor"},"idl•")]),s(" {"),a("a",{id:"v1304589447",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Δ << Δ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Δ = Δ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ s << ?Δ Γ Δ s",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1304589447"},[a("span",{class:"LocalVar"},"s")]),s(` +| `),a("a",{id:"Mian-3c3c-idr•",class:"aya-hover","aya-hover-text":"(s ∘ id refl) = s",href:"#Mian-3c3c-idr•"},[a("span",{class:"Constructor"},"idr•")]),s(" {"),a("a",{id:"v379303133",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ s << ?Δ Γ Δ s",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Γ",href:"#Mian-3c3c-id"},[a("span",{class:"Constructor"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ = Γ",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v379303133"},[a("span",{class:"LocalVar"},"s")]),s(` +| `),a("a",{id:"Mian-3c3c-ass",class:"aya-hover","aya-hover-text":"((σ ∘ δ) ∘ ν) = (σ ∘ (δ ∘ ν))",href:"#Mian-3c3c-ass"},[a("span",{class:"Constructor"},"ass")]),s(" {"),a("a",{id:"v1571798597",class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{id:"v575935098",class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1367937032",class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s("} {"),a("a",{id:"v798310141",class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v575935098"},[a("span",{class:"LocalVar"},"Ξ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v258535644",class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1571798597"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s(`} + : (`),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ",href:"#v258535644"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ξ << Θ",href:"#v798310141"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Γ Δ Θ Ξ ν δ σ << ?Δ Γ Δ Θ Ξ ν δ σ",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Ξ",href:"#v1367937032"},[a("span",{class:"LocalVar"},"ν")]),s(`) +| `),a("a",{id:"Mian-3c3c-π₁β",class:"aya-hover","aya-hover-text":"π₁ (δ ∷ t) = δ",href:"#Mian-3c3c-π₁β"},[a("span",{class:"Constructor"},"π₁β")]),s(" {"),a("a",{id:"v1179792105",class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v2038522556",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2038522556"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} ("),a("a",{id:"v1954985045",class:"aya-hover","aya-hover-text":"Tm Γ (Subst A δ)",href:"#v1954985045"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v2038522556"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(")) : "),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ Γ Δ δ A t << (?Δ' Γ Δ δ A t ▷ ?A Γ Δ δ A t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Γ (Subst A δ)",href:"#v1954985045"},[a("span",{class:"LocalVar"},"t")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#v1179792105"},[a("span",{class:"LocalVar"},"δ")]),s(` +| _, _ `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" _ ⇒ "),a("a",{id:"Mian-3c3c-πη",class:"aya-hover","aya-hover-text":"(π₁ δ ∷ π₂ δ) = δ",href:"#Mian-3c3c-πη"},[a("span",{class:"Constructor"},"πη")]),s(" {"),a("a",{id:"v1865859824",class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1076641925"},[a("span",{class:"LocalVar"},"Δ")]),s("} : ("),a("a",{class:"aya-hover","aya-hover-text":"_ << _",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ _ _ _ δ << (?Δ' _ _ _ δ ▷ ?A _ _ _ δ)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst _ (π₁ δ))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << (_ ▷ _)",href:"#v1865859824"},[a("span",{class:"LocalVar"},"δ")]),s(` +| _, `),a("a",{id:"v800088638",class:"aya-hover","aya-hover-text":"Con",href:"#v800088638"},[a("span",{class:"LocalVar"},"Δ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v1236444285",class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v1236444285"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-∷∘",class:"aya-hover","aya-hover-text":"((σ ∷ t) ∘ δ) = ((σ ∘ δ) ∷ transport (Tm _) SubAss (sub t))",href:"#Mian-3c3c-∷∘"},[a("span",{class:"Constructor"},"∷∘")]),s(" {"),a("a",{id:"v1096485705",class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v1834361038",class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v800088638"},[a("span",{class:"LocalVar"},"Δ'")]),s("} {"),a("a",{id:"v823914581",class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s("} {"),a("a",{id:"v566113173",class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1096485705"},[a("span",{class:"LocalVar"},"Θ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Θ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ'",href:"#v1236444285"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(`)} + : (`),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ Δ' A _ Θ σ δ t << (?Δ' Δ' A _ Θ σ δ t ▷ ?A Δ' A _ Θ σ δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?Γ Δ' A _ Θ σ δ t << ?Δ Δ' A _ Θ σ δ t",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Θ << Δ'",href:"#v1834361038"},[a("span",{class:"LocalVar"},"σ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?Γ Δ' A _ Θ σ δ t << ?Δ Δ' A _ Θ σ δ t",href:"#Mian-3c3c-∘"},[a("span",{class:"Constructor"},"∘")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Θ",href:"#v823914581"},[a("span",{class:"LocalVar"},"δ")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"?_ Δ' A _ Θ σ δ t << (?Δ' Δ' A _ Θ σ δ t ▷ ?A Δ' A _ Θ σ δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst A (σ ∘ δ))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxNTQxNTI1NjY4Ij48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Subst (Subst A σ) δ = Subst A (σ ∘ δ)",href:"#Mian-Ty-SubAss"},[a("span",{class:"Constructor"},"SubAss")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst (Subst A σ) δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm Θ (Subst A σ)",href:"#v566113173"},[a("span",{class:"LocalVar"},"t")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s(" ⇒ "),a("a",{id:"Mian-3c3c-εη",class:"aya-hover","aya-hover-text":"δ = ε",href:"#Mian-3c3c-εη"},[a("span",{class:"Constructor"},"εη")]),s(" {"),a("a",{id:"v37981645",class:"aya-hover","aya-hover-text":"_ << •",href:"#v37981645"},[a("span",{class:"LocalVar"},"δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v91912419"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-•"},[a("span",{class:"Constructor"},"•")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"_ << •",href:"#v37981645"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << •",href:"#Mian-3c3c-ε"},[a("span",{class:"Constructor"},"ε")])]),s(` +`)],-1),i('

An instance of type Γ << Δ corresponds to the σσ in the substitution typing Γσ:ΔΓ ⊢ σ : Δ.

Terms

',2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Tm",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{id:"v1345483087",class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{id:"v105579928",class:"aya-hover","aya-hover-text":"Ty _",href:"#v105579928"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v418958713",class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v418958713"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-λ",class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v105579928"},[a("span",{class:"LocalVar"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v418958713"},[a("span",{class:"LocalVar"},"B")]),s(`) +| `),a("a",{id:"v238762799",class:"aya-hover","aya-hover-text":"Con",href:"#v238762799"},[a("span",{class:"LocalVar"},"Γ'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(", "),a("a",{id:"v1824837049",class:"aya-hover","aya-hover-text":"Ty (Γ' ▷ A)",href:"#v1824837049"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-app",class:"aya-hover","aya-hover-text":"Tm (Γ' ▷ A) B",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v238762799"},[a("span",{class:"LocalVar"},"Γ'")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ'",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Γ' ▷ A)",href:"#v1824837049"},[a("span",{class:"LocalVar"},"B")]),s(`)) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v685558284",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v685558284"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v1171802656",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1171802656"},[a("span",{class:"LocalVar"},"δ")]),s(" ⇒ "),a("a",{id:"Mian-Tm-sub",class:"aya-hover","aya-hover-text":"Tm _ (Subst A δ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxNTE1ODMzOTUwIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs6UPC9zcGFuPjwvYT48L2NvZGU+CjwvcHJlPgo="},"_"),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v685558284"},[a("span",{class:"LocalVar"},"A")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v859654796",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v859654796"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Γ << Δ",href:"#Mian-3c3c-π₁"},[a("span",{class:"Constructor"},"π₁")]),s(),a("a",{id:"v1440621772",class:"aya-hover","aya-hover-text":"_ << (Δ ▷ B)",href:"#v1440621772"},[a("span",{class:"LocalVar"},"δ")]),s(") ⇒ "),a("a",{id:"Mian-Tm-π₂",class:"aya-hover","aya-hover-text":"Tm _ (Subst A (π₁ δ))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y4MjE1NzYzOTQiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+zpQ8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v859654796"},[a("span",{class:"LocalVar"},"A")]),s(`) +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{id:"v442199874",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v442199874"},[a("span",{class:"LocalVar"},"B")]),s(),a("a",{id:"v1345900725",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1345900725"},[a("span",{class:"LocalVar"},"δ")]),s(),a("span",{class:"Keyword"},"as"),s(),a("a",{id:"v839998248",class:"aya-hover","aya-hover-text":"Ty _",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-π₂β",class:"aya-hover","aya-hover-text":"coe 0 1 (\\ p0 ⇒ Tm _ (Subst B (π₁β t p0))) (π₂ (δ ∷ t)) = t",href:"#Mian-Tm-π₂β"},[a("span",{class:"Constructor"},"π₂β")]),s(" {"),a("a",{id:"v2107577743",class:"aya-hover","aya-hover-text":"Con",href:"#v2107577743"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} ("),a("a",{id:"v1173346575",class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")]),s(`) + : `),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y3MTg1NzEwOTEiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+Xzwvc3Bhbj48L2E+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Subst B (π₁ (δ ∷ t)) = Subst B δ",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(_ << Δ) → Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v442199874"},[a("span",{class:"LocalVar"},"B")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → _ << Δ",href:"#Mian-3c3c-π₁β"},[a("span",{class:"Constructor"},"π₁β")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(")) ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B (π₁ (δ ∷ t)))",href:"#Mian-Tm-π₂"},[a("span",{class:"Constructor"},"π₂")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v1345900725"},[a("span",{class:"LocalVar"},"δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"?_ B δ _ Δ Δ t << (?Δ' B δ _ Δ Δ t ▷ ?A B δ _ Δ Δ t)",href:"#Mian-3c3c-∷"},[a("span",{class:"Constructor"},"∷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(")) "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst B δ)",href:"#v1173346575"},[a("span",{class:"LocalVar"},"t")]),s(` +| _ `),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(" _, "),a("a",{id:"v405896924",class:"aya-hover","aya-hover-text":"Ty (_ ▷ _)",href:"#v405896924"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-Πβ",class:"aya-hover","aya-hover-text":"app (λ f) = f",href:"#Mian-Tm-Πβ"},[a("span",{class:"Constructor"},"Πβ")]),s(" ("),a("a",{id:"v1267105885",class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ _)",href:"#v405896924"},[a("span",{class:"LocalVar"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ A)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) A",href:"#v1267105885"},[a("span",{class:"LocalVar"},"f")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" _ _ "),a("span",{class:"Keyword"},"as"),s(),a("a",{id:"v400103862",class:"aya-hover","aya-hover-text":"Ty _",href:"#v400103862"},[a("span",{class:"LocalVar"},"A")]),s(" ⇒ "),a("a",{id:"Mian-Tm-Πη",class:"aya-hover","aya-hover-text":"λ (app f) = f",href:"#Mian-Tm-Πη"},[a("span",{class:"Constructor"},"Πη")]),s(" ("),a("a",{id:"v573200870",class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v400103862"},[a("span",{class:"LocalVar"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm (_ ▷ _) _",href:"#Mian-Tm-app"},[a("span",{class:"Constructor"},"app")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π _ _)",href:"#v573200870"},[a("span",{class:"LocalVar"},"f")]),s(` +| _, `),a("a",{class:"aya-hover","aya-hover-text":"Ty Γ",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{id:"v1058876963",class:"aya-hover","aya-hover-text":"Ty _",href:"#v1058876963"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{id:"v1399701152",class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v1399701152"},[a("span",{class:"LocalVar"},"B")]),s(" ⇒ "),a("a",{id:"Mian-Tm-subλ",class:"aya-hover","aya-hover-text":`coe 0 1 (\\ p0 ⇒ Tm _ (fording p0)) (coe 0 1 (\\ p0 ⇒ Tm _ (SubΠ σ p0)) (sub (λ t))) += coe 0 1 (\\ p0 ⇒ Tm _ (fording p0)) (λ (sub t))`,href:"#Mian-Tm-subλ"},[a("span",{class:"Constructor"},"subλ")]),s(" {"),a("a",{id:"v2003463579",class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Con"},[a("span",{class:"Data"},"Con")]),s("} {"),a("a",{id:"v567294307",class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v1345483087"},[a("span",{class:"LocalVar"},"Γ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3c3c"},[a("span",{class:"Data"},"<<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v527829831",class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s("} {"),a("a",{id:"v418179060",class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Ty"},[a("span",{class:"Data"},"Ty")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(`)} + (`),a("a",{id:"v777457133",class:"aya-hover","aya-hover-text":`Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) SubAss +(π₂ (id refl)))) = Π A B`,href:"#v777457133"},[a("span",{class:"LocalVar"},"fording")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ Subst A' σ)",href:"#Mian-Ty-Subst"},[a("span",{class:"Constructor"},"Subst")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+KDxhIGhyZWY9IiN2NTY3Mjk0MzA3Ij48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPs+DPC9zcGFuPjwvYT4gPGEgaHJlZj0iI01pYW4tM2MzYy3iiJgiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+4oiYPC9zcGFuPjwvYT4gPHNwYW4gY2xhc3M9IkNhbGwiPjxhIGhyZWY9IiNNaWFuLTNjM2Mtz4DigoEiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+z4DigoE8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLTNjM2MtaWQiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+aWQ8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1yZWZsIj48c3BhbiBjbGFzcz0iRm4iPnJlZmw8L3NwYW4+PC9hPik8L3NwYW4+PC9zcGFuPikgPGEgaHJlZj0iI01pYW4tM2MzYy3iiLciPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+4oi3PC9zcGFuPjwvYT4gPHNwYW4gY2xhc3M9IkNhbGwiPjxhIGhyZWY9IiNNaWFuLXRyYW5zcG9ydCI+PHNwYW4gY2xhc3M9IkZuIj50cmFuc3BvcnQ8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLVRtIj48c3BhbiBjbGFzcz0iRGF0YSI+VG08L3NwYW4+PC9hPiAoPGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1Db24t4pa3Ij48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPuKWtzwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj48YSBocmVmPSIjTWlhbi1UeS1TdWJzdCI+PHNwYW4gY2xhc3M9IkNvbnN0cnVjdG9yIj5TdWJzdDwvc3Bhbj48L2E+IDxhIGhyZWY9IiN2NTI3ODI5ODMxIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPkEnPC9zcGFuPjwvYT4gPGEgaHJlZj0iI3Y1NjcyOTQzMDciPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+z4M8L3NwYW4+PC9hPjwvc3Bhbj4pKTwvc3Bhbj4gPGEgaHJlZj0iI01pYW4tVHktU3ViQXNzIj48c3BhbiBjbGFzcz0iQ29uc3RydWN0b3IiPlN1YkFzczwvc3Bhbj48L2E+IDxzcGFuIGNsYXNzPSJDYWxsIj4oPGEgaHJlZj0iI01pYW4tVG0tz4DigoIiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+z4DigoI8L3NwYW4+PC9hPiA8c3BhbiBjbGFzcz0iQ2FsbCI+KDxhIGhyZWY9IiNNaWFuLTNjM2MtaWQiPjxzcGFuIGNsYXNzPSJDb25zdHJ1Y3RvciI+aWQ8L3NwYW4+PC9hPiA8YSBocmVmPSIjTWlhbi1yZWZsIj48c3BhbiBjbGFzcz0iRm4iPnJlZmw8L3NwYW4+PC9hPik8L3NwYW4+KTwvc3Bhbj48L3NwYW4+PC9jb2RlPgo8L3ByZT4K"},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#Mian-Ty-Π"},[a("span",{class:"Constructor"},"Π")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty _",href:"#v1058876963"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty (_ ▷ A)",href:"#v1399701152"},[a("span",{class:"LocalVar"},"B")]),s(") {"),a("a",{id:"v193388045",class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#v2003463579"},[a("span",{class:"LocalVar"},"Δ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Con",href:"#Mian-Con-▷"},[a("span",{class:"Constructor"},"▷")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Ty Δ",href:"#v527829831"},[a("span",{class:"LocalVar"},"A'")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Ty (Δ ▷ A')",href:"#v418179060"},[a("span",{class:"LocalVar"},"B'")]),s(`} + : `),a("span",{class:"Keyword"},"let"),s(),a("a",{id:"v394785440",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" := "),a("a",{class:"aya-hover","aya-hover-text":`Tm _ (Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' +σ)) SubAss (π₂ (id refl))))) → Tm _ (Π A B)`,href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") "),a("a",{class:"aya-hover","aya-hover-text":`Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) SubAss +(π₂ (id refl)))) = Π A B`,href:"#v777457133"},[a("span",{class:"LocalVar"},"fording")]),s(` + `),a("span",{class:"Keyword"},"in"),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π (Subst A' σ) (Subst B' (ext σ A')))",href:"#Mian-transport"},[a("span",{class:"Fn"},"transport")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Ty _ → Type 0",href:"#Mian-Tm"},[a("span",{class:"Data"},"Tm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YxMjA0Mjk2MzgzIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPl88L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"I → Ty _",href:"#Mian-Ty-SubΠ"},[a("span",{class:"Constructor"},"SubΠ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"_ << Δ",href:"#v567294307"},[a("span",{class:"LocalVar"},"σ")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Subst (Π A' B') σ)",href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Tm Δ (Π A' B')",href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s(`))) + `),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm _ (Π A B)",href:"#v394785440"},[a("span",{class:"LocalVar"},"ford")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":`Tm _ (Π (Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' +σ)) SubAss (π₂ (id refl)))))`,href:"#Mian-Tm-λ"},[a("span",{class:"Constructor"},"λ")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":`Tm (_ ▷ Subst A' σ) (Subst B' ((σ ∘ π₁ (id refl)) ∷ transport (Tm (_ ▷ Subst A' σ)) +SubAss (π₂ (id refl))))`,href:"#Mian-Tm-sub"},[a("span",{class:"Constructor"},"sub")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Tm (Δ ▷ A') B'",href:"#v193388045"},[a("span",{class:"LocalVar"},"t")]),s("))")]),s(` +`)],-1),i('

An instance of type Tm Γ A corresponds to the tt in the judgment Γt:AΓ⊢t:A.

',1)]))}const j=V(w,[["render",S]]);export{P as __pageData,j as default}; diff --git a/assets/chunks/@localSearchIndexroot.DpLJ-EhC.js b/assets/chunks/@localSearchIndexroot.DpLJ-EhC.js new file mode 100644 index 0000000..adcde1f --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.DpLJ-EhC.js @@ -0,0 +1 @@ +const e=`{"documentCount":61,"nextId":61,"documentIds":{"0":"/blog/binops.html#binary-operators-in-aya","1":"/blog/bye-hott.html#moving-away-from-univalent-type-theory","2":"/blog/class-defeq.html#class-extension-with-definitional-projection","3":"/blog/class-defeq.html#anonymous-extensions","4":"/blog/class-defeq.html#definitional-projection","5":"/blog/class-defeq.html#implementation","6":"/blog/extended-pruning.html#extended-pruning-for-pattern-unification","7":"/blog/extended-pruning.html#case-study","8":"/blog/ind-prop.html#impredicative-props-are-hard","9":"/blog/ind-prop.html#motivation","10":"/blog/ind-prop.html#ad-hoc-termination-rules-of-impredicative-prop","11":"/blog/ind-prop.html#alternative-ways-to-impredicativity","12":"/blog/#aya-blogs","13":"/blog/lang-exts.html#haskell-or-agda-style-extensions","14":"/blog/lang-exts.html#agda-s-extensions","15":"/blog/lang-exts.html#aya-s-choice","16":"/blog/lang-exts.html#safe-flag","17":"/blog/lang-exts.html#conclusion","18":"/blog/lang-exts.html#library-design","19":"/blog/index-unification.html#index-unification-and-forced-patterns-in-aya","20":"/blog/index-unification.html#the-so-called-meta-patteriables","21":"/blog/path-elab.html#elaboration-of-the-extension-type","22":"/blog/path-elab.html#first-attempt","23":"/blog/path-elab.html#second-attempt","24":"/blog/path-elab.html#third-attempt","25":"/blog/path-elab.html#update-2023-03-24","26":"/blog/pathcon-elab.html#elaboration-of-path-constructors","27":"/blog/pathcon-elab.html#syntax","28":"/blog/pathcon-elab.html#flattening","29":"/blog/pathcon-elab.html#example","30":"/blog/tt-in-tt-qiit.html#type-theory-in-type-theory-using-quotient-inductive-types","31":"/blog/tt-in-tt-qiit.html#prelude","32":"/blog/tt-in-tt-qiit.html#context","33":"/blog/tt-in-tt-qiit.html#types","34":"/blog/tt-in-tt-qiit.html#substitution-objects","35":"/blog/tt-in-tt-qiit.html#terms","36":"/guide/fake-literate.html#fake-literate-mode","37":"/guide/haskeller-tutorial.html#so-you-know-some-haskell","38":"/guide/haskeller-tutorial.html#working-with-the-repl","39":"/guide/haskeller-tutorial.html#working-with-projects","40":"/guide/haskeller-tutorial.html#programming-in-aya","41":"/guide/haskeller-tutorial.html#type-level-programming","42":"/guide/haskeller-tutorial.html#type-families","43":"/guide/haskeller-tutorial.html#overlapping-patterns","44":"/guide/#the-aya-prover","45":"/guide/install.html#install-aya","46":"/guide/install.html#download-from-github-release","47":"/guide/install.html#use-aya-in-github-actions","48":"/guide/install.html#if-you-already-have-java-runtime","49":"/guide/install.html#prebuilt-binary","50":"/guide/install.html#build-from-source","51":"/guide/project-tutorial.html#aya-package","52":"/guide/prover-tutorial.html#proof-assistants-user-tutorial","53":"/guide/prover-tutorial.html#function-extensionality","54":"/guide/prover-tutorial.html#cubical","55":"/guide/prover-tutorial.html#overlapping-and-order-independent-pattern-matching","56":"/guide/prover-tutorial.html#heterogeneous-equality","57":"/guide/prover-tutorial.html#quotient-inductive-types","58":"/guide/vscode-tutorial.html#so-you-are-using-vscode","59":"/guide/readings.html#recommended-reading","60":"/pubs/#publications"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,188],"1":[6,1,315],"2":[5,1,51],"3":[2,5,64],"4":[2,5,51],"5":[1,5,125],"6":[5,1,169],"7":[2,5,158],"8":[4,1,30],"9":[1,4,63],"10":[7,4,236],"11":[4,4,87],"12":[2,1,29],"13":[5,1,42],"14":[3,5,165],"15":[4,5,125],"16":[3,9,118],"17":[1,9,40],"18":[2,5,71],"19":[7,1,166],"20":[7,7,140],"21":[6,1,150],"22":[2,6,102],"23":[2,6,73],"24":[2,6,73],"25":[5,6,100],"26":[4,1,27],"27":[1,4,33],"28":[1,4,50],"29":[1,4,106],"30":[7,1,12],"31":[1,7,33],"32":[1,7,50],"33":[1,7,89],"34":[2,7,59],"35":[1,7,52],"36":[3,1,170],"37":[5,1,30],"38":[4,5,124],"39":[3,5,76],"40":[3,5,213],"41":[3,5,117],"42":[2,5,131],"43":[2,5,120],"44":[3,1,111],"45":[2,1,70],"46":[4,2,87],"47":[5,2,39],"48":[7,2,42],"49":[2,9,22],"50":[3,9,98],"51":[2,1,87],"52":[4,1,75],"53":[2,4,115],"54":[1,4,212],"55":[6,4,95],"56":[2,4,175],"57":[3,4,213],"58":[5,1,143],"59":[2,1,47],"60":[1,1,13]},"averageFieldLength":[3.1639344262295084,3.8852459016393444,99.45901639344262],"storedFields":{"0":{"title":"Binary operators in Aya","titles":[]},"1":{"title":"Moving away from univalent type theory","titles":[]},"2":{"title":"Class extension with definitional projection","titles":[]},"3":{"title":"Anonymous extensions","titles":["Class extension with definitional projection"]},"4":{"title":"Definitional projection","titles":["Class extension with definitional projection"]},"5":{"title":"Implementation","titles":["Class extension with definitional projection"]},"6":{"title":"Extended pruning for pattern unification","titles":[]},"7":{"title":"Case Study","titles":["Extended pruning for pattern unification"]},"8":{"title":"Impredicative Props are hard","titles":[]},"9":{"title":"Motivation","titles":["Impredicative Props are hard"]},"10":{"title":"Ad-hoc termination rules of impredicative Prop","titles":["Impredicative Props are hard"]},"11":{"title":"Alternative ways to impredicativity","titles":["Impredicative Props are hard"]},"12":{"title":"Aya blogs","titles":[]},"13":{"title":"Haskell or Agda style extensions","titles":[]},"14":{"title":"Agda's extensions","titles":["Haskell or Agda style extensions"]},"15":{"title":"Aya's choice?","titles":["Haskell or Agda style extensions"]},"16":{"title":"Safe flag?","titles":["Haskell or Agda style extensions","Aya's choice?"]},"17":{"title":"Conclusion","titles":["Haskell or Agda style extensions","Aya's choice?"]},"18":{"title":"Library Design","titles":["Haskell or Agda style extensions"]},"19":{"title":"Index unification and forced patterns in Aya","titles":[]},"20":{"title":"The so-called "meta patteriables"","titles":["Index unification and forced patterns in Aya"]},"21":{"title":"Elaboration of the "extension" type","titles":[]},"22":{"title":"First attempt","titles":["Elaboration of the "extension" type"]},"23":{"title":"Second attempt","titles":["Elaboration of the "extension" type"]},"24":{"title":"Third attempt","titles":["Elaboration of the "extension" type"]},"25":{"title":"Update (2023-03-24)","titles":["Elaboration of the "extension" type"]},"26":{"title":"Elaboration of path constructors","titles":[]},"27":{"title":"Syntax","titles":["Elaboration of path constructors"]},"28":{"title":"Flattening","titles":["Elaboration of path constructors"]},"29":{"title":"Example","titles":["Elaboration of path constructors"]},"30":{"title":"Type Theory in Type Theory using Quotient Inductive Types","titles":[]},"31":{"title":"Prelude","titles":["Type Theory in Type Theory using Quotient Inductive Types"]},"32":{"title":"Context","titles":["Type Theory in Type Theory using Quotient Inductive Types"]},"33":{"title":"Types","titles":["Type Theory in Type Theory using Quotient Inductive Types"]},"34":{"title":"Substitution objects","titles":["Type Theory in Type Theory using Quotient Inductive Types"]},"35":{"title":"Terms","titles":["Type Theory in Type Theory using Quotient Inductive Types"]},"36":{"title":"Fake literate mode","titles":[]},"37":{"title":"So you know some Haskell","titles":[]},"38":{"title":"Working with the REPL","titles":["So you know some Haskell"]},"39":{"title":"Working with projects","titles":["So you know some Haskell"]},"40":{"title":"Programming in Aya","titles":["So you know some Haskell"]},"41":{"title":"Type-level programming","titles":["So you know some Haskell"]},"42":{"title":"Type families","titles":["So you know some Haskell"]},"43":{"title":"Overlapping patterns","titles":["So you know some Haskell"]},"44":{"title":"The Aya Prover","titles":[]},"45":{"title":"Install Aya","titles":[]},"46":{"title":"Download from GitHub Release","titles":["Install Aya"]},"47":{"title":"Use Aya in GitHub Actions","titles":["Install Aya"]},"48":{"title":"If you already have Java runtime...","titles":["Install Aya"]},"49":{"title":"Prebuilt binary","titles":["Install Aya","If you already have Java runtime..."]},"50":{"title":"Build from source","titles":["Install Aya","If you already have Java runtime..."]},"51":{"title":"Aya Package","titles":[]},"52":{"title":"Proof assistants' user tutorial","titles":[]},"53":{"title":"Function extensionality","titles":["Proof assistants' user tutorial"]},"54":{"title":"Cubical","titles":["Proof assistants' user tutorial"]},"55":{"title":"Overlapping and Order-independent Pattern Matching","titles":["Proof assistants' user tutorial"]},"56":{"title":"Heterogeneous equality","titles":["Proof assistants' user tutorial"]},"57":{"title":"Quotient inductive types","titles":["Proof assistants' user tutorial"]},"58":{"title":"So you are using VSCode","titles":[]},"59":{"title":"Recommended Reading","titles":[]},"60":{"title":"Publications","titles":[]}},"dirtCount":0,"index":[["β",{"2":{"54":1}}],["\`ide",{"2":{"50":1}}],["$path",{"2":{"46":1}}],["$user",{"2":{"46":1}}],["$",{"2":{"46":4}}],["$aya",{"2":{"46":2}}],["✨lambdas✨",{"2":{"38":1}}],["≃",{"2":{"36":4}}],["ν",{"2":{"34":3}}],["ξ",{"2":{"34":3}}],["εη",{"2":{"34":1}}],["ε",{"2":{"34":2}}],["↑",{"2":{"33":1,"54":2,"56":1}}],["∘",{"2":{"33":2,"34":9}}],["θ",{"2":{"33":6,"34":10}}],["δγ⊢σ",{"2":{"34":1}}],["δγ",{"2":{"34":1}}],["δ",{"2":{"33":30,"34":35,"35":10}}],["⋅",{"2":{"32":2}}],["▷",{"2":{"32":1,"33":4,"34":5,"35":6}}],["¬j↦p",{"2":{"29":4}}],["¬",{"2":{"29":8}}],["¬i↦b",{"2":{"29":12}}],["¬i¬",{"2":{"27":1}}],["​→π",{"2":{"29":2}}],["​",{"2":{"28":3,"29":4}}],["↦",{"2":{"28":2}}],["↦u",{"2":{"28":4}}],["φ",{"2":{"28":6}}],["φ↦",{"2":{"27":1,"28":2}}],["φ↦u​",{"2":{"27":1,"28":2}}],["φ↦u",{"2":{"27":1,"28":2}}],["⋯",{"2":{"28":2}}],["^",{"2":{"21":2,"51":2}}],["↓",{"2":{"21":2}}],["ℓ",{"2":{"21":2}}],["≡",{"2":{"21":5}}],["😉",{"2":{"19":1}}],["👈",{"2":{"12":1}}],["≅",{"2":{"11":1}}],["⊤",{"2":{"11":1}}],["σσσ",{"2":{"34":1}}],["σ",{"2":{"11":1,"33":4,"34":8,"35":3}}],["⊥",{"2":{"10":2,"11":1}}],["9",{"2":{"7":1}}],["╰──────────────╯",{"2":{"7":3}}],["871094",{"2":{"36":1}}],["8c8c8c",{"2":{"36":1}}],["8",{"2":{"7":1}}],["│",{"2":{"7":7}}],["6",{"2":{"7":1,"40":1}}],["ℕ",{"2":{"7":5}}],["∷∘",{"2":{"34":1}}],["∷",{"2":{"7":9,"33":1,"34":6,"35":1}}],["zro",{"2":{"57":4}}],["zip",{"2":{"46":9}}],["zero",{"2":{"7":1,"19":3,"20":4,"23":2,"36":3,"40":4,"42":1,"52":1}}],["zs",{"2":{"6":6,"7":35,"56":16}}],["λ",{"2":{"7":1,"10":1,"21":12,"22":1,"23":2,"35":5,"38":2,"40":3}}],["∀",{"2":{"7":1,"19":2,"20":1,"54":1,"57":2}}],["q~",{"2":{"29":1}}],["quit",{"2":{"38":1}}],["quite",{"2":{"16":1,"19":1,"58":1}}],["quick",{"2":{"36":1}}],["qualified",{"2":{"39":1,"40":1,"41":1}}],["quad",{"2":{"28":1,"32":2}}],["quantification",{"2":{"9":1}}],["question",{"2":{"9":1,"10":1,"29":1,"53":2}}],["quotients",{"2":{"44":1,"57":1}}],["quotient",{"0":{"30":1,"57":1},"1":{"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"1":1,"57":2}}],["quot",{"0":{"20":2,"21":2},"1":{"22":2,"23":2,"24":2,"25":2},"2":{"1":2,"6":4,"10":4,"11":2,"13":2,"15":4,"16":10,"19":12,"20":8,"21":6,"22":2,"24":2,"40":4,"53":2,"54":4,"58":4}}],["q",{"2":{"6":3,"21":3,"29":7,"38":1,"54":6}}],["­⊢",{"2":{"6":4}}],["γ⊢t",{"2":{"35":1}}],["γ⊢σ",{"2":{"34":1}}],["γ⊢el",{"2":{"33":1}}],["γ⊢",{"2":{"33":2}}],["γ⊢u",{"2":{"33":2}}],["γ⊢a",{"2":{"32":2,"33":6}}],["γ⊢a~",{"2":{"32":1}}],["γ~",{"2":{"32":1}}],["γγγ",{"2":{"32":1}}],["γ",{"2":{"6":13,"32":5,"33":14,"34":15,"35":11}}],["⇒",{"2":{"6":1,"31":8,"33":1,"34":5,"35":8,"40":8,"41":5,"42":8,"52":2,"53":7,"54":12,"55":8,"56":16,"57":15}}],["1cm",{"2":{"36":1}}],["145304",{"2":{"36":1}}],["15cm",{"2":{"36":2}}],["198",{"2":{"20":1}}],["1",{"2":{"6":5,"7":3,"21":6,"22":1,"28":6,"29":2,"31":1,"36":26,"40":6,"54":8,"56":2,"57":4}}],["0cm",{"2":{"36":1}}],["0pt",{"2":{"36":1}}],["0033b3",{"2":{"36":1}}],["00627a",{"2":{"36":5}}],["067d17",{"2":{"36":1}}],["0em",{"2":{"36":2}}],["03",{"0":{"25":1}}],["0",{"2":{"6":5,"7":3,"10":4,"19":2,"20":2,"21":5,"29":2,"31":1,"36":10,"40":2,"41":1,"42":1,"43":7,"51":1,"54":10,"55":6,"56":3,"57":8}}],["→π",{"2":{"29":4}}],["→isprop",{"2":{"29":2}}],["→flatten",{"2":{"28":2}}],["→y",{"2":{"28":2}}],["→y​",{"2":{"28":1}}],["→yflatten",{"2":{"28":1}}],["→",{"2":{"6":2,"7":2,"10":8,"21":16,"22":1,"23":2,"28":3,"29":10,"31":2,"41":2,"52":2,"54":5,"56":1,"57":5}}],["η",{"2":{"5":1,"22":2,"25":1,"54":1}}],["⊢",{"2":{"5":2,"34":1}}],[">>",{"2":{"46":1}}],[">++",{"2":{"42":2}}],[">=",{"2":{"7":6}}],[">",{"2":{"3":2,"10":6,"19":6,"20":3,"29":8,"40":8,"41":1,"42":4}}],["|",{"2":{"3":5,"10":1,"21":18,"24":8,"29":2,"32":2,"33":9,"34":12,"35":8,"40":7,"41":4,"42":10,"43":4,"52":2,"53":4,"55":9,"56":9,"57":19}}],["jon",{"2":{"59":1}}],["json",{"2":{"51":5,"58":1}}],["jpackage",{"2":{"50":2}}],["jlinkaya",{"2":{"50":1}}],["jlink",{"2":{"45":1,"46":3,"50":1,"58":2}}],["jvm",{"2":{"44":1}}],["jit",{"2":{"44":1}}],["jars",{"2":{"48":1,"50":1}}],["jar",{"2":{"36":2,"38":3,"49":3,"50":1,"51":3,"58":2}}],["java",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"1":1,"2":1,"14":2,"36":1,"38":1,"48":1,"49":1,"50":1,"51":1,"58":3}}],["judgmental",{"2":{"54":1,"57":3}}],["judgmentally",{"2":{"43":1}}],["judgment",{"2":{"32":2,"33":2,"35":1}}],["just",{"2":{"1":1,"7":1,"10":1,"15":2,"20":1,"41":2,"42":3,"54":1,"55":1,"57":1,"59":1}}],["j~i",{"2":{"29":1}}],["j↦",{"2":{"29":4}}],["j↦q",{"2":{"29":4}}],["j​​",{"2":{"28":1}}],["j​",{"2":{"28":2}}],["j",{"2":{"21":6,"28":6,"29":8,"54":1,"56":1,"57":4}}],["α",{"2":{"1":1}}],["πβ",{"2":{"35":1}}],["πη",{"2":{"34":1,"35":1}}],["π₂β",{"2":{"35":1}}],["π₂",{"2":{"33":1,"34":1,"35":2}}],["π₁β",{"2":{"34":1,"35":1}}],["π₁",{"2":{"33":1,"34":3,"35":1}}],["π",{"2":{"1":1,"22":1,"25":2,"28":4,"29":7,"33":4,"35":6,"38":1}}],["à",{"2":{"1":1,"25":1}}],["vscode",{"0":{"58":1},"2":{"39":2,"44":2,"49":1,"58":3}}],["vspace",{"2":{"36":2}}],["vcons",{"2":{"19":2,"20":1}}],["vnil",{"2":{"19":3,"20":3}}],["via",{"2":{"13":1}}],["values",{"2":{"41":1,"57":1}}],["valid",{"2":{"10":1,"19":1,"20":1,"22":1,"57":1}}],["vartriangleright",{"2":{"32":1}}],["various",{"2":{"9":1}}],["variables",{"2":{"19":1,"55":1}}],["variable",{"2":{"6":1,"7":1,"19":1,"20":5,"22":1,"31":1,"38":1,"40":1,"41":2,"42":2,"46":1,"52":1,"56":1}}],["vague",{"2":{"18":1}}],["vanilla",{"2":{"6":1}}],["ve",{"2":{"6":1,"14":1}}],["vector",{"2":{"19":1,"42":2,"56":2}}],["vectors",{"2":{"6":1,"54":1,"56":1}}],["vecb",{"2":{"6":4}}],["veca",{"2":{"6":4}}],["vec",{"2":{"6":9,"7":11,"19":5,"20":4,"42":9,"43":2,"56":19}}],["verify",{"2":{"54":1}}],["verbosity",{"2":{"15":1}}],["version>",{"2":{"50":1,"51":1}}],["version",{"2":{"1":2,"12":1,"19":2,"21":2,"24":1,"36":1,"40":1,"45":2,"47":2,"49":1,"51":2,"53":1,"58":1}}],["very",{"2":{"0":1,"4":1,"6":1,"7":1,"10":3,"15":1,"39":1,"41":1,"43":2,"45":1,"48":1,"53":1,"54":1}}],["v0",{"2":{"1":1}}],["gadts",{"2":{"42":1}}],["github",{"0":{"46":1,"47":1},"2":{"37":1,"45":2,"46":1,"47":1,"52":1,"58":1}}],["given",{"2":{"22":1}}],["ghci",{"2":{"37":1,"38":2}}],["guide",{"2":{"44":1}}],["guides",{"2":{"1":1}}],["guess",{"2":{"16":1}}],["guaranteed",{"2":{"16":1}}],["goal",{"2":{"53":4}}],["go",{"2":{"40":1,"45":1,"58":1,"59":1}}],["gonna",{"2":{"18":1}}],["got",{"2":{"10":1}}],["good",{"2":{"7":2,"10":1,"14":2,"21":1,"43":1,"59":1}}],["going",{"2":{"0":1,"15":1,"22":1}}],["generic",{"2":{"38":1}}],["generation",{"2":{"44":1}}],["generating",{"2":{"10":1}}],["generate",{"2":{"10":1,"20":2,"22":3,"24":1,"36":1,"50":1}}],["generates",{"2":{"7":1,"36":1}}],["generated",{"2":{"6":1,"36":2,"40":1}}],["generality",{"2":{"21":1}}],["generalized",{"2":{"1":1,"21":1,"24":1}}],["general",{"2":{"6":1,"7":1,"9":1,"14":1,"45":1}}],["get",{"2":{"6":1,"9":1,"10":1,"11":1,"22":1,"38":1,"42":1,"54":1}}],["gets",{"2":{"5":1,"21":1}}],["gradle",{"2":{"50":2}}],["gradlew",{"2":{"50":7}}],["gratzer",{"2":{"1":1}}],["great",{"2":{"37":1,"52":1}}],["grp",{"2":{"5":9}}],["group>",{"2":{"51":1}}],["group⊢grp",{"2":{"5":2}}],["grouphom",{"2":{"3":2,"4":2}}],["group",{"2":{"3":6,"4":3,"5":7,"51":2}}],["g",{"2":{"1":1,"20":1,"22":1,"36":1,"46":1,"54":7,"57":7}}],["gt",{"2":{"1":3,"20":1,"23":3,"36":2,"38":2,"40":6,"41":5,"42":1,"43":1,"51":2,"53":1,"54":4,"55":1,"56":1}}],["up",{"2":{"52":1}}],["updated",{"2":{"25":1,"45":1}}],["update",{"0":{"25":1}}],["uγ⊢a",{"2":{"33":1}}],["uγ⊢el",{"2":{"33":1}}],["u​",{"2":{"33":1}}],["u",{"2":{"5":6,"27":1,"28":4,"33":11}}],["unless",{"2":{"48":1,"53":1}}],["unlike",{"2":{"40":1}}],["unzip",{"2":{"46":1,"58":1}}],["under",{"2":{"58":1}}],["understand",{"2":{"52":1}}],["underscored",{"2":{"40":1}}],["undergraduate",{"2":{"7":1}}],["unqualify",{"2":{"39":1,"40":1}}],["unrelated",{"2":{"25":1}}],["unsolved",{"2":{"24":1}}],["unsafecoerce",{"2":{"43":1}}],["unsafe",{"2":{"16":3,"17":1,"18":1}}],["unhappy",{"2":{"15":1}}],["unfortunately",{"2":{"15":1}}],["unfold",{"2":{"1":1}}],["unfolding",{"2":{"1":1}}],["unclear",{"2":{"10":1}}],["unchecked",{"2":{"1":1}}],["uninteresting",{"2":{"57":1}}],["unit",{"2":{"42":5,"57":2}}],["unique",{"2":{"7":1,"57":1}}],["unify",{"2":{"23":1}}],["unification",{"0":{"6":1,"19":1},"1":{"7":1,"20":1},"2":{"6":5,"7":2,"14":1,"15":1,"19":2,"20":1}}],["uniform",{"2":{"5":1}}],["uniformly",{"2":{"1":1}}],["universes",{"2":{"1":1,"10":1}}],["universe",{"2":{"1":5,"10":1,"25":1}}],["univalent",{"0":{"1":1},"2":{"1":1}}],["usual",{"2":{"55":1}}],["usually",{"2":{"10":2}}],["usable",{"2":{"50":1}}],["us",{"2":{"15":1,"54":1}}],["user",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1}}],["users",{"2":{"1":1,"38":1,"43":1,"44":2,"51":1,"52":1}}],["useless",{"2":{"43":1}}],["usepackage",{"2":{"36":2}}],["used",{"2":{"6":1,"19":2,"27":2,"28":1,"38":1,"40":1,"51":1}}],["uses",{"2":{"2":1,"10":1,"21":1,"32":1,"33":1,"42":1,"47":1}}],["useful",{"2":{"1":1,"7":1,"15":2,"16":1,"43":1}}],["use",{"0":{"47":1},"2":{"1":4,"7":1,"8":1,"11":1,"14":1,"15":2,"16":1,"18":1,"19":1,"21":3,"36":2,"38":5,"39":3,"40":5,"41":1,"42":1,"43":1,"47":2,"50":1,"52":1,"56":3,"58":3}}],["using",{"0":{"30":1,"58":1},"1":{"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"0":1,"6":1,"10":4,"15":1,"21":1,"38":1,"39":3,"40":1,"41":2,"42":1,"45":1,"48":1,"49":2,"51":1,"54":1,"55":1,"56":1,"57":3}}],["43",{"2":{"7":3}}],["49",{"2":{"7":3}}],["40",{"2":{"7":4}}],["41",{"2":{"7":4}}],["4",{"2":{"0":1}}],["31",{"2":{"51":1}}],["35936",{"2":{"36":1}}],["39",{"2":{"7":10}}],["30",{"2":{"1":1}}],["3",{"2":{"0":1}}],["=π",{"2":{"28":3,"29":6}}],["=aa=",{"2":{"28":1}}],["=a",{"2":{"28":1}}],["==>",{"2":{"5":1}}],["=",{"2":{"0":1,"1":1,"3":6,"5":4,"6":1,"7":46,"10":6,"11":1,"19":4,"20":3,"21":11,"24":1,"28":7,"29":5,"31":5,"33":5,"34":11,"35":6,"38":2,"40":3,"41":1,"43":3,"52":1,"53":3,"54":33,"55":5,"56":9,"57":7}}],["=>",{"2":{"0":4,"6":3,"7":2,"43":4,"54":3,"56":2}}],["~i",{"2":{"29":2}}],["~",{"2":{"0":1,"5":1,"7":6,"21":3,"28":2,"32":1,"33":2,"36":2,"46":3}}],["löf",{"2":{"53":1}}],["lsp",{"2":{"49":1,"50":2,"58":3}}],["l",{"2":{"38":1}}],["lysxia",{"2":{"10":1}}],["lts",{"2":{"48":1}}],["lt",{"2":{"10":2,"33":16,"34":32,"35":4,"36":2,"40":5,"41":3,"42":6,"43":1,"51":2,"56":4}}],["ll",{"2":{"10":2,"13":1,"17":1,"22":1,"54":1}}],["little",{"2":{"52":1}}],["literal",{"2":{"40":1}}],["literals",{"2":{"40":1}}],["literate",{"0":{"36":1},"2":{"36":3,"44":1}}],["linux",{"2":{"46":6}}],["link",{"2":{"30":1,"59":1}}],["linear",{"2":{"40":1}}],["line",{"2":{"13":1,"49":1,"57":9,"58":1}}],["libs",{"2":{"50":1}}],["lib",{"2":{"18":1}}],["library",{"0":{"18":1},"2":{"7":1,"14":2,"15":1,"18":1,"21":1}}],["libraries",{"2":{"1":1,"14":1,"18":2}}],["listed",{"2":{"46":1}}],["lists",{"2":{"18":1}}],["list",{"2":{"12":1,"53":1,"59":2,"60":1}}],["limited",{"2":{"6":1}}],["lightweight",{"2":{"4":1}}],["likely",{"2":{"38":1}}],["like",{"2":{"0":3,"10":3,"14":1,"15":2,"18":4,"22":1,"29":3,"36":1,"38":1,"40":3,"41":1,"42":1,"44":1,"47":1,"50":1,"56":1,"57":2}}],["lame",{"2":{"56":1}}],["lambda",{"2":{"22":2,"54":1}}],["lambdas",{"2":{"21":1,"22":1,"38":1}}],["latter",{"2":{"53":1}}],["latex",{"2":{"36":2}}],["later",{"2":{"14":1,"29":1}}],["latest",{"2":{"12":1,"36":1,"47":2,"48":1,"58":1}}],["layer",{"2":{"11":1}}],["lax",{"2":{"6":1}}],["last",{"2":{"1":1,"16":1,"57":1}}],["la",{"2":{"1":1,"25":1}}],["languages",{"2":{"14":1,"36":1}}],["language",{"2":{"1":1,"3":1,"5":2,"11":2,"13":1,"14":9,"15":4,"16":1,"17":1,"42":3,"44":2,"50":3,"58":1}}],["lemma",{"2":{"55":1,"56":2,"57":2}}],["lemmas",{"2":{"18":1,"54":1,"55":1}}],["lesson",{"2":{"22":1,"23":1}}],["len",{"2":{"19":8,"20":5}}],["lennon",{"2":{"10":1}}],["let",{"2":{"14":1,"19":1,"20":2,"35":1,"36":2,"39":1,"40":2,"50":1,"54":1}}],["leads",{"2":{"21":1,"23":1}}],["lead",{"2":{"16":1,"17":1}}],["least",{"2":{"14":1}}],["lean",{"2":{"10":1,"18":1,"38":1,"57":1}}],["leaf",{"2":{"10":2}}],["level",{"0":{"41":1},"2":{"1":1,"15":3,"40":2,"44":1}}],["levels",{"2":{"0":1,"13":1,"15":1,"38":1}}],["leftskip",{"2":{"36":2}}],["left",{"2":{"0":3,"6":2,"10":5,"40":1,"54":3,"57":8}}],["load",{"2":{"38":1,"58":1}}],["looser",{"2":{"34":1,"40":1}}],["looking",{"2":{"14":1,"57":1}}],["look",{"2":{"6":1,"43":1,"52":1}}],["lookup",{"2":{"0":1}}],["looks",{"2":{"0":1,"10":1,"21":1,"29":1,"40":1,"56":1}}],["lot",{"2":{"14":1,"23":1}}],["logical",{"2":{"16":3}}],["logic",{"2":{"11":1}}],["long",{"2":{"9":1}}],["longer",{"2":{"1":1,"11":1}}],["lossy",{"2":{"7":1}}],["locally",{"2":{"1":1}}],["lower",{"2":{"0":1,"40":1}}],["yaml",{"2":{"47":1}}],["yellow",{"2":{"58":1}}],["yet",{"2":{"24":1,"54":1}}],["yes",{"2":{"1":1,"41":1,"42":1}}],["ys",{"2":{"6":6,"7":35,"42":6,"56":22}}],["yourself",{"2":{"54":1,"56":1}}],["your",{"2":{"6":2,"14":1,"36":2,"38":1,"45":1,"46":2,"47":1,"50":1,"51":1,"53":1,"58":1}}],["you",{"0":{"37":1,"48":1,"58":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"49":1,"50":1},"2":{"4":1,"9":1,"10":5,"13":2,"16":1,"20":1,"24":1,"33":1,"36":4,"37":2,"38":6,"39":1,"40":7,"41":2,"42":3,"43":1,"45":1,"46":2,"47":3,"48":1,"50":3,"51":1,"52":4,"53":7,"54":3,"55":4,"56":1,"57":2,"58":7,"59":1}}],["y",{"2":{"0":2,"28":11,"31":2,"39":1}}],["x64",{"2":{"46":5}}],["xcolor",{"2":{"36":1}}],["x3c",{"2":{"36":1,"40":14,"42":2,"43":2,"50":3,"51":5,"56":2}}],["x27",{"2":{"28":4}}],["xs",{"2":{"6":6,"7":31,"10":6,"42":4,"43":4,"56":20}}],["xtt",{"2":{"1":5}}],["x",{"2":{"0":4,"7":12,"10":4,"19":4,"20":2,"27":3,"28":27,"31":2,"38":5,"39":14,"40":3,"41":6,"42":9,"53":7,"56":6,"57":3}}],["+>",{"2":{"40":13,"43":2}}],["++",{"2":{"6":12,"7":15,"43":4,"56":31}}],["+",{"2":{"0":8,"6":14,"7":11,"40":7,"41":3,"42":1,"43":5,"55":15,"56":14}}],["efficient",{"2":{"44":1}}],["efficiency",{"2":{"22":1}}],["effects",{"2":{"18":1}}],["equivalence",{"2":{"54":4,"57":1}}],["equivalent",{"2":{"21":1,"56":1}}],["equates",{"2":{"57":1}}],["equation",{"2":{"7":1,"56":1,"57":1}}],["equations",{"2":{"6":2,"7":1,"15":1}}],["equalities",{"2":{"57":1}}],["equality",{"0":{"56":1},"2":{"1":5,"5":1,"6":4,"53":1,"54":11,"55":1,"56":4,"57":9}}],["equals",{"2":{"54":2,"57":3}}],["equal",{"2":{"4":2,"5":2,"53":1,"56":1,"57":1}}],["emission",{"2":{"19":1}}],["embrace",{"2":{"1":1}}],["evaluate",{"2":{"42":1}}],["evolving",{"2":{"14":1}}],["evidence",{"2":{"14":1}}],["eventually",{"2":{"15":1,"16":1}}],["even",{"2":{"5":2,"13":1,"21":1,"57":1}}],["everything",{"2":{"39":1}}],["everywhere",{"2":{"22":1}}],["every",{"2":{"0":1,"6":1,"22":1,"54":1}}],["easy",{"2":{"15":1,"19":1}}],["easily",{"2":{"0":1}}],["each",{"2":{"14":1}}],["earth",{"2":{"11":1}}],["environments",{"2":{"50":1}}],["enchanted",{"2":{"44":1}}],["encountered",{"2":{"21":1}}],["encouraged",{"2":{"15":1,"54":1,"59":1}}],["encourage",{"2":{"1":1}}],["enforce",{"2":{"40":1}}],["end",{"2":{"17":1,"21":2,"29":3}}],["enabling",{"2":{"16":1}}],["enables",{"2":{"14":1,"17":1}}],["enable",{"2":{"14":3,"15":1,"16":1,"38":1,"49":1,"51":1}}],["enlisted",{"2":{"15":1}}],["enlightening",{"2":{"7":1}}],["ensures",{"2":{"57":1}}],["ensuremath",{"2":{"36":1}}],["ensure",{"2":{"14":1,"16":1}}],["elim",{"2":{"40":2,"55":2,"56":2,"57":8}}],["elimination",{"2":{"54":1,"55":1,"57":4}}],["eliminator",{"2":{"10":2}}],["eliminators",{"2":{"10":2}}],["eliminates",{"2":{"10":1,"23":1}}],["eliminate",{"2":{"8":1}}],["el",{"2":{"25":2,"33":5}}],["element",{"2":{"21":1,"57":1}}],["elements",{"2":{"1":3,"57":1}}],["elaboration",{"0":{"21":1,"26":1},"1":{"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"29":1},"2":{"6":1,"21":1,"28":1}}],["elaborated",{"2":{"5":1,"23":1,"29":1}}],["elaborate",{"2":{"5":2}}],["etc",{"2":{"3":1,"14":4,"18":2,"36":1,"57":1,"58":3}}],["e",{"2":{"1":2,"7":1,"20":1,"22":1,"36":1,"46":1}}],["especially",{"2":{"38":1}}],["essentially",{"2":{"1":1,"6":1,"25":1}}],["essential",{"2":{"0":1}}],["established",{"2":{"0":1}}],["errors",{"2":{"1":1}}],["error",{"2":{"0":1,"7":1,"17":2,"58":2}}],["either",{"2":{"0":1,"11":1,"15":1,"36":1}}],["exercises",{"2":{"54":1}}],["exercise",{"2":{"54":1}}],["executable",{"2":{"45":1,"50":1,"58":2}}],["exactly",{"2":{"20":1,"42":1}}],["example",{"0":{"29":1},"2":{"10":2,"15":1,"19":1,"21":1,"26":1,"29":1,"40":1,"41":3,"42":2,"47":1,"55":1,"56":2,"57":3}}],["examples",{"2":{"0":1,"1":1,"12":1}}],["expresses",{"2":{"56":1}}],["expression",{"2":{"22":1}}],["expressions",{"2":{"0":1,"21":1,"38":1}}],["export",{"2":{"39":1,"46":1}}],["expanded",{"2":{"22":1}}],["expand",{"2":{"22":2}}],["expansion",{"2":{"5":1,"25":1}}],["explicit",{"2":{"41":1}}],["explicitly",{"2":{"21":1,"41":1}}],["exploiting",{"2":{"16":1}}],["experience",{"2":{"52":1}}],["experimenting",{"2":{"15":1}}],["experimental",{"2":{"15":1}}],["experiment",{"2":{"14":1}}],["expected",{"2":{"19":1,"20":2}}],["expect",{"2":{"10":1,"37":1,"40":1,"52":1}}],["except",{"2":{"1":2,"39":1}}],["exo",{"2":{"1":1}}],["ext",{"2":{"33":3}}],["extremely",{"2":{"15":1}}],["extracting",{"2":{"1":1}}],["extent",{"2":{"14":1}}],["extend",{"2":{"7":1}}],["extending",{"2":{"6":1}}],["extends",{"2":{"2":1}}],["extended",{"0":{"6":1},"1":{"7":1},"2":{"2":1}}],["extension",{"0":{"2":1,"21":1},"1":{"3":1,"4":1,"5":1,"22":1,"23":1,"24":1,"25":1},"2":{"3":1,"5":1,"21":1,"26":1,"27":1,"44":1,"58":3}}],["extensions",{"0":{"3":1,"13":1,"14":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"1":1,"13":1,"42":1}}],["extensionality",{"0":{"53":1},"2":{"1":1,"53":2,"54":1,"57":1}}],["extensional",{"2":{"1":2}}],["existing",{"2":{"0":1,"19":1}}],["hypothesis",{"2":{"56":1}}],["hypothetically",{"2":{"54":1}}],["hyperlinked",{"2":{"44":1}}],["href=",{"2":{"42":2}}],["https",{"2":{"36":1,"46":1,"50":1}}],["html",{"2":{"36":10}}],["hspace",{"2":{"36":10}}],["helpful",{"2":{"59":1}}],["help",{"2":{"38":1,"45":1,"54":1}}],["hello",{"2":{"36":4}}],["head",{"2":{"19":1,"29":1}}],["heavy",{"2":{"4":1}}],["heterogeneous",{"0":{"56":1},"2":{"6":1,"21":1,"56":3}}],["here",{"2":{"0":1,"5":1,"19":2,"21":2,"30":1,"41":1,"46":1,"47":1,"51":1,"52":1,"54":1,"56":2,"57":1}}],["h",{"2":{"1":1}}],["hit",{"2":{"58":1}}],["hiding",{"2":{"39":1}}],["highlight",{"2":{"58":2}}],["highlights",{"2":{"44":2}}],["highlighting",{"2":{"36":1}}],["higher",{"2":{"0":1,"1":1,"21":1,"26":1,"28":1,"29":1,"44":2}}],["hierarchy",{"2":{"1":1}}],["hovering",{"2":{"58":1}}],["host",{"2":{"51":1}}],["holes",{"2":{"44":1,"53":1}}],["honest",{"2":{"16":1}}],["hott",{"2":{"14":1,"29":1}}],["hoc",{"0":{"10":1}}],["home",{"2":{"58":1}}],["hom",{"2":{"3":7,"4":1,"5":4}}],["however",{"2":{"7":1,"14":1,"15":1,"19":2,"53":1,"54":1,"55":1,"56":1}}],["how",{"2":{"1":1,"7":1,"10":1,"16":1,"21":1,"33":1,"40":1,"42":1,"50":1,"54":1,"57":2,"58":1}}],["hopefully",{"2":{"48":1}}],["hope",{"2":{"0":1,"52":1}}],["happen",{"2":{"14":1}}],["happens",{"2":{"0":1,"2":1}}],["having",{"2":{"10":1,"14":1,"21":1,"43":1,"56":1}}],["have",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"0":3,"1":4,"3":1,"4":2,"5":4,"6":2,"7":1,"8":1,"9":1,"10":5,"11":1,"14":1,"15":1,"16":1,"17":1,"18":1,"21":3,"22":2,"23":1,"24":1,"25":1,"40":3,"41":2,"42":1,"43":2,"50":1,"51":1,"52":1,"53":3,"54":1,"55":1,"56":2,"57":1,"58":3}}],["handed",{"2":{"50":1}}],["hands",{"2":{"46":1}}],["hand",{"2":{"6":2,"54":2}}],["harder",{"2":{"56":1}}],["hard",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"5":1,"10":1,"16":1,"56":2}}],["harm",{"2":{"0":1,"17":1,"22":1}}],["has",{"2":{"0":1,"1":4,"6":3,"8":1,"20":1,"21":1,"22":1,"24":1,"25":1,"38":1,"44":2,"53":2,"54":2,"57":3}}],["haskellid",{"2":{"41":1}}],["haskellleft",{"2":{"10":1}}],["haskelldata",{"2":{"10":1,"40":1}}],["haskell",{"0":{"13":1,"37":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"0":1,"10":1,"13":2,"37":1,"39":1,"40":4,"41":1,"42":4,"44":2}}],["fj",{"2":{"50":1}}],["f",{"2":{"31":4,"35":6,"41":1,"54":20,"56":2,"57":7}}],["ffi",{"2":{"18":1}}],["fewer",{"2":{"21":1}}],["feels",{"2":{"54":1}}],["feel",{"2":{"6":1,"24":1,"42":1}}],["features",{"2":{"1":1,"4":1,"13":1,"14":5,"15":4,"17":1,"44":2,"57":1,"58":1}}],["feature",{"2":{"0":1,"1":1,"2":1,"5":2,"14":1,"15":3,"19":1,"43":1}}],["fat",{"2":{"50":1}}],["fatjar",{"2":{"38":1,"50":2,"51":1,"58":1}}],["fake",{"0":{"36":1},"2":{"36":2,"44":1}}],["face",{"2":{"21":1}}],["faces",{"2":{"21":3}}],["fact",{"2":{"19":1}}],["fancy",{"2":{"15":1}}],["far",{"2":{"14":1,"24":1}}],["familiar",{"2":{"54":1,"57":1}}],["families",{"0":{"42":1},"2":{"42":1,"56":1}}],["family",{"2":{"1":1,"20":1,"42":2}}],["famous",{"2":{"10":1,"19":1,"42":1}}],["false",{"2":{"10":2,"16":1,"53":3}}],["failed",{"2":{"7":1}}],["fail",{"2":{"7":1,"10":1}}],["fails",{"2":{"6":2}}],["fn",{"2":{"6":5,"7":1,"38":2,"53":1,"54":8,"56":4,"57":1}}],["flcl",{"2":{"36":2}}],["flatten",{"2":{"28":10}}],["flattenop",{"2":{"28":8,"29":3}}],["flattening",{"0":{"28":1},"2":{"24":1,"29":1}}],["flags",{"2":{"14":1,"15":1,"17":2}}],["flag",{"0":{"16":1},"2":{"14":2,"15":1,"16":2,"17":1}}],["flexibility",{"2":{"2":1}}],["float",{"2":{"0":1}}],["fibrant",{"2":{"25":1}}],["fibrancy",{"2":{"25":3}}],["find",{"2":{"37":1,"47":1,"52":1,"57":1}}],["finding",{"2":{"6":1}}],["fine",{"2":{"25":1}}],["finalize",{"2":{"20":2}}],["figure",{"2":{"19":1}}],["fits",{"2":{"16":1,"45":1}}],["files",{"2":{"45":1}}],["file",{"2":{"16":1,"36":2,"38":1,"46":1,"49":1,"51":2,"58":5}}],["field",{"2":{"3":3}}],["fields",{"2":{"2":1,"3":1}}],["first",{"0":{"22":1},"2":{"1":2,"15":1,"19":5,"20":3,"21":1,"25":1,"43":2,"46":1,"56":1,"57":1,"58":1}}],["fix",{"2":{"1":1}}],["fixr",{"2":{"0":1,"40":1}}],["fixl",{"2":{"0":2,"40":1}}],["funext",{"2":{"44":1,"54":1,"57":1}}],["funny",{"2":{"19":1}}],["functional",{"2":{"44":2}}],["functions",{"2":{"40":1,"41":1,"42":2,"44":1}}],["function",{"0":{"53":1},"2":{"1":5,"10":2,"40":4,"41":2,"42":1,"43":1,"53":2,"54":6,"55":1,"56":2,"57":1}}],["full",{"2":{"15":1,"30":1}}],["further",{"2":{"4":1,"6":1,"11":1}}],["future",{"2":{"0":1,"1":1,"54":1}}],["fragment",{"2":{"6":1}}],["framework",{"2":{"0":1}}],["freely",{"2":{"21":1}}],["free",{"2":{"1":1,"24":1,"50":1}}],["fromjust",{"2":{"42":5}}],["from",{"0":{"1":1,"46":1,"50":1},"2":{"0":1,"1":8,"5":3,"6":1,"10":2,"14":1,"15":2,"16":1,"20":1,"21":1,"29":1,"31":1,"39":2,"41":1,"48":1,"54":3,"59":1}}],["folder",{"2":{"45":1,"58":1}}],["follow",{"2":{"58":1}}],["followed",{"2":{"38":1,"39":1,"40":1,"50":1}}],["following",{"2":{"1":2,"2":2,"3":1,"6":2,"7":4,"10":4,"21":1,"23":1,"33":1,"36":4,"38":1,"39":1,"40":1,"42":1,"43":1,"44":2,"53":2,"55":1,"56":1,"57":1}}],["four",{"2":{"21":1}}],["found",{"2":{"0":1,"1":1}}],["fortunately",{"2":{"56":1}}],["force",{"2":{"51":1}}],["forced",{"0":{"19":1},"1":{"20":1},"2":{"19":3}}],["ford",{"2":{"35":3}}],["fording",{"2":{"35":2}}],["forks",{"2":{"15":1}}],["forging",{"2":{"11":1}}],["forall",{"2":{"10":2}}],["format",{"2":{"48":1}}],["formalizing",{"2":{"44":1}}],["formalize",{"2":{"1":1,"14":1}}],["form",{"2":{"5":3,"29":1}}],["for",{"0":{"6":1},"1":{"7":1},"2":{"0":1,"1":13,"3":5,"4":1,"6":1,"7":1,"9":1,"10":8,"12":1,"14":1,"15":2,"16":2,"17":1,"18":2,"19":2,"20":5,"21":5,"26":2,"29":2,"36":3,"37":1,"38":1,"39":1,"40":1,"41":3,"43":6,"44":6,"45":1,"46":1,"49":2,"50":1,"51":5,"52":1,"53":1,"54":6,"56":2,"57":1,"58":3}}],["ml",{"2":{"44":1}}],["mltt",{"2":{"4":1,"5":1,"57":1}}],["mkdir",{"2":{"46":1}}],["mk",{"2":{"29":1}}],["multiline",{"2":{"38":1}}],["multiple",{"2":{"2":1}}],["much",{"2":{"22":1,"23":1,"42":1,"48":1,"53":1}}],["mutable",{"2":{"20":3}}],["must",{"2":{"19":1,"20":1,"54":1}}],["mysterious",{"2":{"56":1}}],["my",{"2":{"9":1,"16":1,"29":1}}],["m",{"2":{"6":1,"7":28,"9":1,"29":1,"40":6,"41":2,"42":7,"43":2,"55":6,"56":8}}],["message",{"2":{"58":1}}],["member",{"2":{"53":1}}],["memberwise",{"2":{"53":1}}],["meven",{"2":{"10":1}}],["me",{"2":{"7":1,"16":1,"25":1,"36":1}}],["metadata",{"2":{"51":1}}],["metapatref",{"2":{"20":3}}],["metapat",{"2":{"20":9}}],["metaprogramming",{"2":{"1":1}}],["meta",{"0":{"20":1},"2":{"19":2,"20":2}}],["metas",{"2":{"6":1}}],["metavariables",{"2":{"6":4,"10":1}}],["meaning",{"2":{"39":1,"40":1}}],["meaningful",{"2":{"16":1}}],["mean",{"2":{"0":1,"1":1,"8":1,"21":1}}],["means",{"2":{"0":1,"1":1,"10":1,"16":1,"19":1,"53":1}}],["mian",{"2":{"42":2}}],["minimal",{"2":{"36":1}}],["mind",{"2":{"18":1}}],["minor",{"2":{"15":1}}],["might",{"2":{"1":1,"7":2,"10":1,"57":1}}],["mixfix",{"2":{"0":3}}],["mcbride",{"2":{"1":1,"7":1}}],["money",{"2":{"51":1}}],["moment",{"2":{"29":1}}],["motivation",{"0":{"9":1}}],["motive",{"2":{"7":1}}],["most",{"2":{"6":1,"10":1}}],["modify",{"2":{"14":1,"43":1}}],["modifying",{"2":{"5":1}}],["mode",{"0":{"36":1},"2":{"6":1,"16":1,"36":1,"44":1}}],["modules",{"2":{"18":1,"39":1,"51":1}}],["module",{"2":{"0":1,"1":2,"39":2,"40":1}}],["more",{"2":{"1":1,"2":1,"7":1,"9":1,"16":1,"20":2,"29":1,"42":1,"43":4}}],["moving",{"0":{"1":1},"2":{"1":2}}],["mailing",{"2":{"53":1}}],["main",{"2":{"1":1,"45":1}}],["martin",{"2":{"53":1}}],["macos",{"2":{"46":2}}],["macro",{"2":{"36":1}}],["maps",{"2":{"54":1}}],["map",{"2":{"20":1}}],["match",{"2":{"19":1,"40":1}}],["matching",{"0":{"55":1},"2":{"19":2,"40":1,"41":1,"44":2,"54":1,"55":3}}],["mathrel",{"2":{"36":1}}],["mathlib",{"2":{"18":1}}],["math",{"2":{"11":1,"14":1,"18":1,"44":1}}],["mathematicians",{"2":{"9":1,"14":1,"38":1}}],["mathematics",{"2":{"1":1}}],["mathcal",{"2":{"5":2,"33":3}}],["made",{"2":{"10":1}}],["manually",{"2":{"22":1}}],["many",{"2":{"7":1,"16":1,"36":1}}],["manifest",{"2":{"1":1}}],["major",{"2":{"1":1}}],["make",{"2":{"1":1,"14":1,"18":1,"20":1,"40":1,"43":1,"51":3,"58":1}}],["makes",{"2":{"1":2,"4":1,"10":1,"14":1,"43":1,"44":1,"55":1,"57":1}}],["making",{"2":{"0":1}}],["maybe",{"2":{"14":1,"41":4,"42":4}}],["may",{"2":{"0":1,"3":1,"4":1,"5":2,"10":1,"11":1,"12":1,"19":1,"20":1,"21":1,"36":1,"39":1,"40":1,"41":1,"43":3,"46":1,"54":2,"55":1,"56":2}}],["nightly",{"2":{"45":1,"46":1,"47":1}}],["nil",{"2":{"42":3,"43":2,"56":4}}],["nicely",{"2":{"56":1}}],["nice",{"2":{"19":1}}],["numeric",{"2":{"40":2}}],["numbers",{"2":{"0":1,"6":1,"40":1,"54":1}}],["number",{"2":{"0":1,"40":2,"56":1}}],["null",{"2":{"38":1}}],["nf",{"2":{"38":1}}],["n",{"2":{"7":22,"10":4,"19":7,"20":2,"40":11,"41":4,"42":10,"43":14,"55":14,"56":13,"57":8}}],["neg",{"2":{"57":7}}],["negative",{"2":{"14":1}}],["negatively",{"2":{"14":1}}],["neither",{"2":{"43":1}}],["ne",{"2":{"28":2}}],["necessary",{"2":{"22":1}}],["never",{"2":{"5":1}}],["need",{"2":{"4":1,"10":3,"13":1,"14":1,"19":1,"20":3,"22":1,"25":2,"38":1,"40":3,"42":2,"43":1,"52":1,"53":1,"54":2,"55":1,"56":3,"57":3,"58":1}}],["newunicodechar",{"2":{"36":2}}],["newcommand",{"2":{"28":3,"36":12}}],["new",{"2":{"0":2,"1":1,"2":1,"3":1,"5":1,"14":1,"20":1,"22":1,"23":3,"24":1,"40":1}}],["nor",{"2":{"43":1}}],["normalize",{"2":{"38":2}}],["normalizer",{"2":{"4":2,"5":1}}],["normalization",{"2":{"25":1,"38":1}}],["normal",{"2":{"5":2,"22":1,"29":1,"40":1,"57":1}}],["nose",{"2":{"32":1}}],["non",{"2":{"6":1,"7":2,"57":1}}],["none",{"2":{"6":1}}],["no",{"2":{"1":1,"10":8,"11":1,"14":1,"17":1,"53":1,"54":1}}],["now",{"2":{"1":1,"7":2,"9":1,"10":1,"20":2,"21":1,"22":1,"41":2,"43":1,"48":1,"51":1,"52":1,"53":1,"56":1}}],["nothing",{"2":{"41":1,"42":2,"43":1}}],["notice",{"2":{"10":1}}],["notion",{"2":{"10":1}}],["note",{"2":{"1":1,"6":2,"9":1,"10":3,"12":1,"20":1,"33":1,"38":1,"54":1,"55":1,"57":2}}],["notations",{"2":{"0":1}}],["not",{"2":{"0":3,"1":8,"5":1,"7":2,"8":1,"9":1,"10":3,"12":1,"14":1,"15":3,"18":1,"19":3,"20":2,"21":1,"22":2,"23":1,"24":1,"25":3,"26":1,"38":3,"39":1,"40":4,"41":2,"43":1,"44":2,"51":1,"52":1,"53":8,"54":3,"56":2,"57":4}}],["naming",{"2":{"40":1,"54":1}}],["name>",{"2":{"51":1}}],["names",{"2":{"39":2,"40":5,"50":1,"58":1}}],["named",{"2":{"1":1,"36":1}}],["nameless",{"2":{"1":1}}],["name",{"2":{"0":3,"1":1,"10":1,"14":1,"19":1,"38":1,"40":2,"47":1,"49":1,"50":1,"51":2}}],["natural",{"2":{"1":1,"9":1,"40":2,"54":1,"56":1}}],["nat",{"2":{"0":8,"6":7,"10":1,"19":6,"20":4,"23":1,"40":23,"41":2,"42":3,"43":3,"52":2,"55":7,"56":3,"57":3}}],["oh",{"2":{"40":2}}],["ok",{"2":{"39":1}}],["our",{"2":{"14":1,"15":1,"16":1,"19":1}}],["output",{"2":{"36":2,"40":1}}],["out",{"2":{"7":1,"9":1,"19":1,"24":1,"25":1,"50":1,"54":1}}],["otherwise",{"2":{"43":1}}],["others",{"2":{"41":1}}],["other",{"2":{"10":1,"36":1,"40":1,"43":1,"51":1,"53":1,"55":1,"56":1,"57":1}}],["overlap",{"2":{"43":2,"55":1,"56":2}}],["overlapping",{"0":{"43":1,"55":1},"2":{"44":1}}],["overline",{"2":{"27":2,"28":10}}],["overload",{"2":{"21":1}}],["over",{"2":{"9":1,"38":1}}],["opt",{"2":{"46":1}}],["optional",{"2":{"15":1}}],["options",{"2":{"13":1,"15":1,"40":1}}],["opinion",{"2":{"9":1}}],["operation",{"2":{"54":1,"56":1}}],["operations",{"2":{"18":1,"57":1}}],["operator",{"2":{"0":9,"1":1,"25":1,"33":2,"40":2,"42":1,"57":1}}],["operators",{"0":{"0":1},"2":{"0":2,"41":1}}],["open",{"2":{"0":1,"1":1,"32":1,"33":1,"34":1,"35":1,"37":1,"39":6,"40":4,"41":1,"42":2,"52":2,"53":1,"56":1,"57":2,"58":3}}],["o",{"2":{"6":3,"7":9,"18":1,"36":1,"56":6}}],["observations",{"2":{"41":1}}],["observational",{"2":{"1":1,"53":1}}],["obvious",{"2":{"19":2,"39":1,"40":1,"41":1}}],["obviously",{"2":{"7":1,"19":1}}],["objects",{"0":{"34":1}}],["object",{"2":{"7":1}}],["ob",{"2":{"3":11,"4":1,"5":9}}],["old",{"2":{"1":1,"45":1}}],["ones",{"2":{"40":1}}],["one",{"2":{"9":1,"14":1,"15":3,"18":1,"25":1,"40":3,"43":1,"53":1,"55":1,"56":2,"57":2}}],["once",{"2":{"1":1,"20":1}}],["only",{"2":{"1":1,"10":2,"11":1,"15":2,"16":1,"22":2,"24":1,"25":1,"39":1,"40":1,"43":1,"50":1,"57":1}}],["on",{"2":{"1":1,"5":1,"6":1,"7":9,"9":1,"10":4,"11":1,"14":1,"15":2,"16":1,"18":1,"26":1,"29":2,"32":1,"36":1,"37":1,"40":2,"43":1,"46":2,"48":1,"50":2,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":2}}],["of",{"0":{"10":1,"21":1,"26":1},"1":{"22":1,"23":1,"24":1,"25":1,"27":1,"28":1,"29":1},"2":{"0":1,"1":10,"3":4,"4":1,"5":4,"6":9,"7":2,"8":1,"9":2,"10":10,"11":6,"12":2,"14":6,"16":6,"17":4,"18":1,"19":9,"20":1,"21":4,"22":6,"23":2,"24":3,"25":4,"29":1,"32":1,"33":2,"34":1,"35":1,"36":2,"38":3,"39":1,"40":5,"41":2,"42":2,"43":3,"44":3,"45":4,"47":1,"48":1,"49":1,"51":6,"53":2,"54":8,"55":2,"56":9,"57":6,"58":4,"59":4,"60":1}}],["org",{"2":{"50":1}}],["original",{"2":{"11":1,"53":1}}],["ordered",{"2":{"3":1,"59":1}}],["order",{"0":{"55":1},"2":{"1":1,"15":1,"21":1,"40":1,"44":2,"56":1}}],["ordering",{"2":{"0":2}}],["or",{"0":{"13":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"0":1,"6":1,"11":1,"14":4,"15":3,"16":1,"18":2,"21":1,"36":1,"38":3,"43":1,"44":2,"46":2,"48":1,"52":1,"53":1,"54":1,"58":3,"59":1}}],["omitted",{"2":{"0":1,"40":1,"41":2,"56":1}}],["p0",{"2":{"53":2,"56":2}}],["please",{"2":{"58":1}}],["pleasant",{"2":{"56":1}}],["plenty",{"2":{"40":1,"45":1}}],["platform",{"2":{"45":1,"48":1,"50":1}}],["play",{"2":{"42":1}}],["plain",{"2":{"4":1}}],["plan",{"2":{"0":1,"1":1,"51":1}}],["pmap",{"2":{"31":1,"35":1,"54":2,"55":1,"56":4,"57":3}}],["p~",{"2":{"29":1}}],["p~q",{"2":{"29":2}}],["pinv",{"2":{"54":1}}],["pi",{"2":{"38":1}}],["piece",{"2":{"10":1}}],["piπ",{"2":{"1":1}}],["people",{"2":{"7":1,"14":1,"53":1}}],["per",{"2":{"45":1}}],["pervasive",{"2":{"10":1}}],["perspective",{"2":{"7":1,"16":1}}],["perform",{"2":{"5":1,"19":1}}],["publications",{"0":{"60":1},"2":{"60":1}}],["public",{"2":{"39":1,"40":1}}],["purity",{"2":{"20":1}}],["purpose",{"2":{"6":1,"14":1}}],["put",{"2":{"0":1,"36":1,"58":2}}],["p",{"2":{"6":3,"10":15,"21":8,"22":5,"23":1,"24":1,"29":7,"31":4,"46":1,"54":14,"57":9}}],["pseudocode",{"2":{"3":1}}],["phases",{"2":{"1":1,"14":1}}],["page",{"2":{"58":1,"59":2}}],["package",{"0":{"51":1},"2":{"40":1,"51":1}}],["pair",{"2":{"38":1}}],["painlessly",{"2":{"42":1}}],["painless",{"2":{"40":1}}],["pain",{"2":{"22":1}}],["pase",{"2":{"9":1,"10":1}}],["patteriables",{"0":{"20":1},"2":{"19":1}}],["patterns",{"0":{"19":1,"43":1},"1":{"20":1},"2":{"19":10}}],["pattern",{"0":{"6":1,"55":1},"1":{"7":1},"2":{"6":8,"7":3,"10":2,"15":1,"19":13,"20":9,"40":2,"41":1,"44":2,"54":1,"55":3}}],["patching",{"2":{"10":1}}],["patch",{"2":{"10":2}}],["path=",{"2":{"46":1}}],["pathp",{"2":{"6":1,"7":1,"21":11,"27":1}}],["paths",{"2":{"1":1}}],["path",{"0":{"26":1},"1":{"27":1,"28":1,"29":1},"2":{"1":1,"6":7,"7":1,"18":1,"21":6,"22":10,"23":3,"24":2,"25":3,"31":2,"36":1,"47":1,"52":2,"54":1,"56":4,"57":1,"58":5}}],["paper",{"2":{"1":3,"19":1,"30":1,"33":1}}],["parent",{"2":{"51":2}}],["parentheses",{"2":{"40":1,"41":1}}],["parenthesis",{"2":{"0":1}}],["parindent",{"2":{"36":1}}],["paraphrase",{"2":{"10":1}}],["parameters",{"2":{"14":1,"15":1,"17":1,"21":1,"40":3,"41":4,"57":1}}],["parameter",{"2":{"1":1,"15":1,"40":1,"41":1,"43":2}}],["parts",{"2":{"18":1}}],["particularly",{"2":{"14":2}}],["partially",{"2":{"1":1,"5":1,"10":1,"25":1}}],["partial",{"2":{"0":2,"1":3,"21":1,"29":1,"40":1}}],["part",{"2":{"10":1,"11":1,"15":1,"18":3}}],["party",{"2":{"1":1}}],["pr",{"2":{"20":1}}],["practical",{"2":{"44":1}}],["practice",{"2":{"7":1,"39":1}}],["pragma",{"2":{"13":1,"14":2,"16":1}}],["prune",{"2":{"7":1}}],["pruning",{"0":{"6":1},"1":{"7":1},"2":{"6":1}}],["proxy",{"2":{"50":1}}],["probably",{"2":{"16":1,"21":1,"23":1}}],["problems",{"2":{"6":1,"7":2,"21":1,"23":1,"24":1,"25":1,"50":1}}],["problem",{"2":{"0":1,"7":1,"10":1,"19":1,"22":2,"23":2,"29":2}}],["proving",{"2":{"52":1,"54":1}}],["provides",{"2":{"36":1,"56":1}}],["provide",{"2":{"16":1}}],["prove",{"2":{"53":1,"54":5,"55":1,"56":3}}],["prover",{"0":{"44":1},"2":{"44":1,"46":4,"47":2,"52":1,"58":1}}],["proves",{"2":{"10":1}}],["provably",{"2":{"1":1}}],["proofs",{"2":{"54":1,"57":1}}],["proof",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1},"2":{"10":1,"14":1,"16":1,"43":1,"44":1,"54":3,"55":1,"56":3,"57":2}}],["pro",{"2":{"9":1}}],["project>",{"2":{"50":2}}],["project",{"2":{"39":2,"51":6,"58":2}}],["projects",{"0":{"39":1},"2":{"51":1}}],["projected",{"2":{"5":1}}],["projection",{"0":{"2":1,"4":1},"1":{"3":1,"4":1,"5":1},"2":{"4":1,"5":2}}],["programmers",{"2":{"37":1,"44":1,"58":1}}],["programming",{"0":{"40":1,"41":1},"2":{"1":1,"14":2,"16":1,"18":1,"44":3}}],["program",{"2":{"19":1}}],["progress",{"2":{"1":1}}],["property",{"2":{"8":1}}],["proposition",{"2":{"9":1}}],["propositions",{"2":{"8":1,"11":1}}],["propositionally",{"2":{"56":1}}],["propositional",{"2":{"1":1,"11":1,"53":1,"54":2,"56":1}}],["props",{"0":{"8":1},"1":{"9":1,"10":1,"11":1},"2":{"1":3}}],["prop",{"0":{"10":1},"2":{"1":2,"8":1,"9":3,"10":12,"11":4}}],["printing",{"2":{"36":1,"38":1}}],["print",{"2":{"36":1}}],["principles",{"2":{"55":1}}],["principle",{"2":{"22":1}}],["primitive",{"2":{"10":1}}],["primitives",{"2":{"0":1}}],["prim",{"2":{"6":2,"31":3,"52":3}}],["private",{"2":{"1":1,"57":1}}],["priority",{"2":{"0":1}}],["prebuilt",{"0":{"49":1},"2":{"48":1}}],["pre",{"2":{"44":1,"56":1}}],["pretty",{"2":{"38":1,"53":1}}],["prelude",{"0":{"31":1},"2":{"40":1,"52":1}}],["preserved",{"2":{"57":1}}],["preserve",{"2":{"22":1,"54":1,"57":1}}],["preferred",{"2":{"24":1,"46":1}}],["prefer",{"2":{"19":1,"20":1}}],["prefix",{"2":{"0":1,"46":7}}],["preview",{"2":{"38":1,"49":1,"51":1}}],["previously",{"2":{"40":1}}],["previous",{"2":{"1":1}}],["prevents",{"2":{"14":1,"15":1}}],["predicative",{"2":{"10":5}}],["precat⊢a",{"2":{"5":2}}],["precategories",{"2":{"3":1}}],["precat",{"2":{"3":11,"4":2,"5":7}}],["precedence",{"2":{"0":5,"40":3}}],["precedences",{"2":{"0":3}}],["potential",{"2":{"43":1,"54":1}}],["pos",{"2":{"57":8}}],["possibilities",{"2":{"43":1}}],["possible",{"2":{"2":1}}],["position",{"2":{"10":1}}],["positivity",{"2":{"1":1,"14":1}}],["posted",{"2":{"29":1}}],["posts",{"2":{"12":2}}],["post",{"2":{"2":1,"5":1,"8":1,"10":1,"26":1,"53":1}}],["postfix",{"2":{"0":1}}],["ported",{"2":{"1":1}}],["pointwise",{"2":{"1":1}}],["point",{"2":{"0":1,"6":1,"9":1,"10":1,"54":1,"58":1}}],["popular",{"2":{"0":1}}],["create",{"2":{"58":1}}],["creating",{"2":{"3":1,"54":1}}],["ctrl+l",{"2":{"58":2}}],["ctx​γ⊳a",{"2":{"32":1}}],["ctxγ⊢a",{"2":{"32":2}}],["ctxγ",{"2":{"32":2}}],["ctxγ~",{"2":{"32":1}}],["ctx",{"2":{"32":6}}],["cd",{"2":{"46":2}}],["cdots",{"2":{"28":1}}],["cfrac",{"2":{"28":3,"32":2,"33":2}}],["certain",{"2":{"14":3}}],["citizens",{"2":{"1":1}}],["clone",{"2":{"50":1}}],["closed",{"2":{"1":2,"54":1}}],["clickable",{"2":{"58":1}}],["click",{"2":{"58":1}}],["cli",{"2":{"38":1,"49":1,"51":1}}],["clash",{"2":{"40":1,"54":1}}],["classical",{"2":{"11":2,"15":1}}],["classify",{"2":{"1":1}}],["classes",{"2":{"1":1,"2":1}}],["class",{"0":{"2":1},"1":{"3":1,"4":1,"5":1},"2":{"1":2,"2":1,"3":8,"4":1,"5":1,"57":1}}],["claim",{"2":{"20":1}}],["clauses",{"2":{"57":1}}],["clause",{"2":{"10":2,"19":6,"20":4,"43":1}}],["cycles",{"2":{"1":1}}],["cheating",{"2":{"57":1}}],["cheat",{"2":{"53":1}}],["checkout",{"2":{"43":1}}],["checks",{"2":{"14":3,"16":2,"17":2,"23":1,"51":1}}],["check",{"2":{"6":1,"14":1,"16":2,"19":3,"20":1,"22":1,"23":1,"50":1,"57":2}}],["checker",{"2":{"1":6,"10":7,"15":1,"19":1,"41":1}}],["checking",{"2":{"1":2,"7":1,"15":1,"19":2,"20":3,"21":1,"22":1,"23":2,"24":2,"25":1,"43":1,"44":1,"45":1,"54":1,"55":1}}],["china",{"2":{"50":1}}],["chronological",{"2":{"21":1}}],["chown",{"2":{"46":1}}],["chose",{"2":{"45":1,"53":1}}],["choice",{"0":{"15":1},"1":{"16":1,"17":1},"2":{"58":1}}],["choosing",{"2":{"14":1}}],["chance",{"2":{"1":1,"5":1}}],["changed",{"2":{"1":1}}],["change",{"2":{"1":2,"19":1,"23":1,"25":1}}],["changes",{"2":{"0":1,"12":1,"43":1,"48":1,"56":1,"59":1}}],["changing",{"2":{"0":1,"14":1,"53":1}}],["curly",{"2":{"41":2}}],["current\`",{"2":{"50":1}}],["currently",{"2":{"1":1,"24":1,"29":1}}],["current",{"2":{"0":1,"14":1,"20":1}}],["cumulativity",{"2":{"14":1}}],["cubical",{"0":{"54":1},"2":{"1":8,"6":1,"14":2,"21":3,"25":1,"26":1,"29":1,"44":1,"53":1,"54":1,"56":2,"59":1}}],["customers",{"2":{"14":1}}],["custom",{"2":{"0":1,"14":1}}],["came",{"2":{"53":1}}],["calculus",{"2":{"53":1}}],["calling",{"2":{"19":1}}],["call",{"2":{"10":2,"14":2}}],["calls",{"2":{"1":2}}],["called",{"0":{"20":1},"2":{"1":2,"3":1,"6":1,"10":1,"19":1,"21":1,"29":1,"40":1}}],["capitalization",{"2":{"40":1}}],["capabilities",{"2":{"2":1}}],["carlo",{"2":{"25":1,"31":1}}],["carefully",{"2":{"10":1}}],["care",{"2":{"6":1}}],["categories",{"2":{"18":1}}],["caused",{"2":{"1":1}}],["castrefl",{"2":{"56":1}}],["cast",{"2":{"54":3,"56":5}}],["casing",{"2":{"1":1}}],["cases",{"2":{"20":1,"43":1}}],["case",{"0":{"7":1},"2":{"0":1,"1":2,"2":1,"5":1,"20":2,"22":1,"58":1}}],["cannot",{"2":{"6":1,"8":1,"16":1,"53":1,"54":1}}],["can",{"2":{"0":3,"1":6,"2":2,"4":1,"6":1,"10":2,"13":3,"15":5,"16":3,"18":1,"19":5,"20":2,"21":1,"24":1,"36":1,"38":4,"40":6,"41":1,"42":1,"43":1,"47":2,"48":1,"50":1,"52":1,"53":1,"54":3,"55":2,"56":2,"57":2}}],["c",{"2":{"0":3,"6":3,"7":2,"21":3,"54":5,"56":3}}],["cook",{"2":{"57":1}}],["cool",{"2":{"48":1}}],["cooltt",{"2":{"5":1,"25":1}}],["coverage",{"2":{"50":2}}],["colors",{"2":{"36":1}}],["collection",{"2":{"14":1}}],["copied",{"2":{"31":1}}],["copy",{"2":{"0":1}}],["coerce",{"2":{"54":2}}],["coercive",{"2":{"25":1}}],["coercions",{"2":{"56":1}}],["coercion",{"2":{"1":1,"2":1,"54":1}}],["coe",{"2":{"31":2,"52":1,"54":1,"56":1}}],["codomain",{"2":{"19":1,"20":1}}],["codes",{"2":{"25":1}}],["code",{"2":{"0":1,"7":1,"10":2,"12":1,"19":1,"22":1,"36":5,"39":1,"42":1,"48":1,"51":1,"53":1}}],["correspond",{"2":{"32":1}}],["corresponds",{"2":{"20":1,"27":1,"32":1,"33":4,"34":1,"35":1}}],["corresponding",{"2":{"19":2,"54":1}}],["correct",{"2":{"10":1,"19":1}}],["core",{"2":{"1":1,"5":2}}],["coq",{"2":{"10":4,"38":1,"57":1}}],["course",{"2":{"16":1}}],["counterexample",{"2":{"10":1}}],["couple",{"2":{"1":1}}],["combinators",{"2":{"57":1}}],["combination",{"2":{"14":1}}],["com",{"2":{"36":1,"46":1}}],["comments",{"2":{"58":1}}],["comm",{"2":{"55":4}}],["commit",{"2":{"45":1}}],["commonly",{"2":{"54":1}}],["common",{"2":{"14":1}}],["command",{"2":{"13":1,"36":1,"49":1}}],["commute",{"2":{"5":1}}],["comes",{"2":{"5":1}}],["compiling",{"2":{"44":1}}],["compiled",{"2":{"44":1,"55":1}}],["compiler",{"2":{"14":2,"15":1,"36":1,"44":1}}],["compile",{"2":{"1":1,"36":1}}],["compute",{"2":{"43":2,"44":1}}],["computes",{"2":{"33":1}}],["computations",{"2":{"43":1}}],["computation",{"2":{"1":1,"55":1}}],["compatibility",{"2":{"51":1}}],["compatible",{"2":{"14":1}}],["comparison",{"2":{"10":1}}],["comparing",{"2":{"10":1}}],["complete",{"2":{"1":1,"47":1}}],["completely",{"2":{"1":1,"11":1,"43":1}}],["complications",{"2":{"1":1}}],["cong",{"2":{"54":1}}],["configure",{"2":{"58":1}}],["configurations",{"2":{"36":1}}],["confluence",{"2":{"57":1}}],["conflicts",{"2":{"2":1}}],["con",{"2":{"32":3,"33":7,"34":5,"35":3}}],["conventional",{"2":{"21":2}}],["convenient",{"2":{"9":1,"44":1}}],["converted",{"2":{"20":1}}],["conversion",{"2":{"15":1,"19":1,"43":1}}],["concat",{"2":{"21":2,"54":1}}],["concatenation",{"2":{"21":1}}],["concept",{"2":{"19":1}}],["concerns",{"2":{"11":1}}],["conclusion",{"0":{"17":1}}],["concludes",{"2":{"4":1}}],["conor",{"2":{"7":1}}],["constant",{"2":{"54":1}}],["construct",{"2":{"54":3}}],["construction",{"2":{"54":1}}],["constructions",{"2":{"53":1}}],["constructors",{"0":{"26":1},"1":{"27":1,"28":1,"29":1},"2":{"32":1,"40":3,"41":1,"42":1,"57":2,"58":1}}],["constructor",{"2":{"19":1,"29":2,"33":2,"36":1,"42":1,"57":2}}],["constraint",{"2":{"6":2}}],["constraints",{"2":{"6":1,"7":1}}],["cons",{"2":{"42":1}}],["console",{"2":{"36":1}}],["consists",{"2":{"51":1}}],["consistent",{"2":{"16":1}}],["consistency",{"2":{"16":3}}],["considered",{"2":{"10":2,"57":1}}],["consider",{"2":{"6":1,"10":1,"19":1,"21":1,"23":1,"40":1,"42":1,"53":1,"56":1}}],["considering",{"2":{"1":1}}],["content",{"2":{"26":1}}],["context",{"0":{"32":1},"2":{"19":1,"20":2}}],["contexts",{"2":{"5":1}}],["contains",{"2":{"45":1}}],["contained",{"2":{"30":1}}],["contain",{"2":{"20":1}}],["contrast",{"2":{"4":1}}],["controlling",{"2":{"1":1}}],["iapplyconfluence",{"2":{"29":1}}],["i↦",{"2":{"29":12}}],["i↦a",{"2":{"29":12}}],["i¬i",{"2":{"27":1}}],["iii",{"2":{"27":1}}],["i=0i=0i=0",{"2":{"27":1}}],["i=0↦",{"2":{"27":1}}],["i=0↦a",{"2":{"27":2}}],["i=1i=1i=1",{"2":{"27":1}}],["i=1↦",{"2":{"27":1}}],["i=1↦b",{"2":{"27":2}}],["irrelevance",{"2":{"9":1,"10":1}}],["i0",{"2":{"7":4,"21":6}}],["i1",{"2":{"7":4,"21":6}}],["idr",{"2":{"34":1}}],["idris",{"2":{"19":1,"44":2}}],["idl",{"2":{"34":1}}],["idp",{"2":{"23":3}}],["id",{"2":{"3":1,"5":2,"33":3,"34":3,"41":3,"53":4}}],["ide",{"2":{"50":1}}],["identity",{"2":{"54":1,"56":1}}],["identical",{"2":{"20":1}}],["identifier",{"2":{"0":1}}],["ideas",{"2":{"18":1,"58":1}}],["idea",{"2":{"1":1,"5":2,"40":1}}],["image",{"2":{"50":2}}],["imagine",{"2":{"42":1}}],["immediate",{"2":{"1":1}}],["improve",{"2":{"58":1}}],["impredicativity",{"0":{"11":1},"2":{"9":3,"10":1,"11":3}}],["impredicative",{"0":{"8":1,"10":1},"1":{"9":1,"10":1,"11":1},"2":{"1":4,"9":1,"10":1}}],["impact",{"2":{"14":1}}],["impacts",{"2":{"14":1}}],["imply",{"2":{"11":1,"53":1}}],["implicit",{"2":{"6":1,"23":2,"41":1,"44":1}}],["implicitness",{"2":{"1":1}}],["implies",{"2":{"1":1,"11":3,"16":1,"57":1}}],["implementers",{"2":{"26":1}}],["implemented",{"2":{"0":1,"3":1,"56":1,"57":1}}],["implements",{"2":{"10":1,"19":1}}],["implementing",{"2":{"1":1,"14":1}}],["implementation",{"0":{"5":1},"2":{"1":1,"5":1,"20":1,"25":1,"44":1,"59":1}}],["implementations",{"2":{"0":1}}],["implement",{"2":{"1":2,"4":1,"5":1,"19":1,"21":1}}],["impossible",{"2":{"0":1}}],["important",{"2":{"9":1,"10":1}}],["imports",{"2":{"0":1,"39":2}}],["importing",{"2":{"0":1}}],["import",{"2":{"0":2,"39":9}}],["i",{"2":{"0":3,"1":1,"3":1,"6":24,"7":22,"8":1,"9":4,"10":3,"13":1,"14":1,"15":1,"16":1,"18":3,"19":3,"20":1,"21":37,"22":2,"23":5,"24":3,"25":1,"27":8,"28":9,"29":28,"31":5,"33":1,"37":1,"38":3,"42":1,"45":1,"46":1,"52":6,"54":20,"56":7,"57":8}}],["if",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"0":1,"7":1,"10":3,"11":1,"15":2,"16":2,"18":1,"19":2,"24":1,"36":1,"37":1,"38":1,"40":2,"45":1,"46":1,"47":1,"50":1,"52":1,"54":2,"56":1,"57":2,"58":1}}],["iset",{"2":{"41":1}}],["isn",{"2":{"19":1}}],["isprop",{"2":{"11":1,"29":4}}],["isset",{"2":{"3":1,"29":8}}],["issues",{"2":{"1":1,"58":1}}],["issue",{"2":{"0":1,"16":1,"24":1,"37":1,"40":1,"45":1,"52":1}}],["is",{"2":{"0":4,"1":9,"2":2,"3":9,"4":2,"5":4,"6":8,"7":7,"9":4,"10":16,"11":4,"13":1,"14":8,"15":4,"16":3,"19":9,"20":12,"21":4,"22":5,"23":1,"24":2,"25":5,"26":1,"27":2,"29":5,"32":1,"33":1,"36":2,"37":1,"38":1,"39":4,"41":2,"42":4,"43":5,"44":1,"45":2,"46":1,"50":1,"51":1,"52":1,"53":4,"54":7,"55":5,"56":13,"57":13,"58":2,"59":2,"60":1}}],["items",{"2":{"1":1}}],["itself",{"2":{"10":1,"19":1,"45":1}}],["its",{"2":{"0":1,"6":1,"15":2,"24":1,"50":3,"57":3}}],["it",{"2":{"0":4,"1":4,"2":2,"4":2,"5":3,"6":2,"7":4,"8":1,"9":2,"10":5,"11":1,"13":1,"14":6,"15":7,"16":9,"18":2,"19":5,"20":2,"21":3,"22":1,"25":2,"32":1,"33":1,"36":4,"38":2,"39":2,"40":2,"42":3,"43":1,"45":1,"46":1,"49":1,"53":1,"54":4,"55":2,"56":3,"57":5,"58":2}}],["input",{"2":{"36":1}}],["injective",{"2":{"25":1}}],["invocations",{"2":{"41":1}}],["invoked",{"2":{"25":1}}],["invoke",{"2":{"23":1,"50":2}}],["involves",{"2":{"43":1}}],["invol",{"2":{"0":1}}],["incremental",{"2":{"51":1}}],["includes",{"2":{"57":1}}],["includeflcl",{"2":{"36":2}}],["include",{"2":{"36":2,"40":1}}],["including",{"2":{"22":1,"38":1}}],["incorrect",{"2":{"23":1}}],["incompatible",{"2":{"23":1,"55":1}}],["inconsistency",{"2":{"16":1}}],["inconsistent",{"2":{"14":1}}],["inaccessible",{"2":{"19":1}}],["inline",{"2":{"7":1}}],["insertion",{"2":{"40":1}}],["inserting",{"2":{"23":1}}],["insert",{"2":{"25":1,"41":1}}],["inserts",{"2":{"6":1,"41":1}}],["inside",{"2":{"18":1,"22":1}}],["inspired",{"2":{"5":1}}],["instructions",{"2":{"45":1}}],["installer",{"2":{"50":1}}],["installation",{"2":{"36":1,"44":1,"45":1}}],["install",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1},"2":{"36":1,"46":2,"47":1,"58":1}}],["instances",{"2":{"3":3,"54":1,"57":1}}],["instance",{"2":{"3":1,"10":1,"24":1,"32":1,"33":2,"34":1,"35":1,"43":2}}],["instead",{"2":{"1":3,"10":2,"14":1,"21":1,"22":1,"23":1,"36":1,"38":2,"53":1,"56":1}}],["inheritance",{"2":{"2":1}}],["independent",{"0":{"55":1},"2":{"44":1,"48":1}}],["indexed",{"2":{"20":1,"56":1}}],["index",{"0":{"19":1},"1":{"20":1},"2":{"19":1}}],["indeed",{"2":{"14":1}}],["individually",{"2":{"14":1}}],["indicate",{"2":{"1":1}}],["ind",{"2":{"10":1}}],["induct",{"2":{"7":1}}],["induction",{"2":{"7":2,"10":2,"56":2}}],["inductively",{"2":{"54":1,"57":1}}],["inductive",{"0":{"30":1,"57":1},"1":{"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"1":3,"10":1,"20":1,"26":1,"28":1,"29":2,"32":1,"33":1,"34":1,"35":1,"40":2,"41":1,"42":3,"52":1,"53":1,"56":1,"57":2}}],["intuitive",{"2":{"52":1}}],["int",{"2":{"36":9,"38":1,"57":5}}],["introduce",{"2":{"6":1,"15":1}}],["introduced",{"2":{"0":1,"19":1}}],["introduction",{"2":{"5":1}}],["into",{"2":{"5":3,"18":1,"19":1,"20":4,"22":1,"25":2,"40":1,"43":1,"57":2}}],["integer",{"2":{"57":1}}],["intensional",{"2":{"57":1}}],["intentionally",{"2":{"40":1}}],["intend",{"2":{"1":2}}],["interactive",{"2":{"44":2,"45":1,"52":2}}],["interoperability",{"2":{"14":1}}],["interesting",{"2":{"57":3}}],["interest",{"2":{"7":1}}],["internally",{"2":{"22":1,"40":1}}],["internal",{"2":{"1":1}}],["interval",{"2":{"6":1,"21":1,"57":12}}],["intervals",{"2":{"1":1}}],["intervalmax",{"2":{"0":1}}],["intervalmin",{"2":{"0":1}}],["info",{"2":{"7":1}}],["information",{"2":{"0":1,"1":1,"5":1,"10":1,"24":1,"25":1,"43":1,"59":1}}],["infers",{"2":{"39":1}}],["infer",{"2":{"6":1}}],["inferred",{"2":{"1":1,"41":1}}],["infixr",{"2":{"34":1,"40":1,"42":3,"56":2}}],["infix",{"2":{"0":4,"31":1,"32":1,"34":2,"40":2,"42":1,"52":1,"55":2}}],["infixl",{"2":{"0":2,"40":5,"41":1,"43":1}}],["in",{"0":{"0":1,"19":1,"30":1,"40":1,"47":1},"1":{"20":1,"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"0":7,"1":8,"2":3,"3":3,"4":2,"5":4,"6":3,"7":5,"9":2,"10":7,"11":3,"13":2,"14":4,"15":3,"16":2,"18":1,"19":14,"20":5,"21":2,"22":1,"24":2,"25":3,"27":1,"28":1,"32":1,"33":2,"34":1,"35":2,"36":2,"38":2,"39":1,"40":4,"41":4,"42":7,"43":2,"45":1,"47":1,"50":3,"53":3,"54":2,"55":2,"56":3,"57":8,"58":5}}],["7",{"2":{"0":1,"7":1,"40":4}}],["5em",{"2":{"36":8}}],["530",{"2":{"24":1}}],["57",{"2":{"7":2}}],["5",{"2":{"0":1,"40":2}}],["2b2b",{"2":{"42":2}}],["24",{"0":{"25":1}}],["2023",{"0":{"25":1}}],["2ltt",{"2":{"1":1}}],["2",{"2":{"0":1,"40":3}}],["r",{"2":{"52":2}}],["rc",{"2":{"46":1}}],["rf",{"2":{"46":1}}],["rm",{"2":{"46":2}}],["runtime",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"43":1}}],["running",{"2":{"38":1}}],["run",{"2":{"19":1,"20":1,"36":1,"45":1,"49":1,"50":3,"51":2,"58":1}}],["russell",{"2":{"11":1}}],["rule",{"2":{"10":1,"14":1,"33":1,"39":1,"54":2,"55":1,"57":1}}],["rules",{"0":{"10":1},"2":{"6":1,"14":1}}],["rings",{"2":{"18":1}}],["richest",{"2":{"14":1}}],["rid",{"2":{"9":1,"10":1}}],["right",{"2":{"0":1,"5":1,"6":2,"7":1,"11":1,"42":1,"54":1,"57":8}}],["randomly",{"2":{"59":1}}],["raggedright",{"2":{"36":1}}],["raise",{"2":{"7":1}}],["rather",{"2":{"1":1,"48":1}}],["racket",{"2":{"0":1}}],["regular",{"2":{"58":1}}],["regarding",{"2":{"9":1,"10":1}}],["rebuilding",{"2":{"51":1}}],["rerun",{"2":{"50":1}}],["red",{"2":{"58":1}}],["redtt",{"2":{"44":1}}],["reduces",{"2":{"57":1}}],["reduce",{"2":{"22":1,"43":1,"54":2}}],["reduction",{"2":{"22":2}}],["renamed",{"2":{"39":1,"54":1}}],["renaming",{"2":{"0":1}}],["record",{"2":{"53":1,"56":1}}],["records",{"2":{"53":1}}],["recommend",{"2":{"45":1}}],["recommended",{"0":{"59":1},"2":{"39":1,"42":1,"58":1}}],["recursion",{"2":{"10":3,"14":1}}],["recursively",{"2":{"10":1}}],["recursive",{"2":{"1":1,"10":2,"29":1}}],["return",{"2":{"29":1,"40":1}}],["returns",{"2":{"25":1,"57":1}}],["required",{"2":{"16":1,"25":1}}],["requires",{"2":{"5":1,"50":1}}],["rewriting",{"2":{"14":1}}],["rewrites",{"2":{"18":1}}],["rewrite",{"2":{"1":2}}],["respects",{"2":{"25":1}}],["results",{"2":{"20":1}}],["restricted",{"2":{"39":1}}],["rest",{"2":{"19":1,"58":1}}],["restatement",{"2":{"11":1}}],["resizing",{"2":{"1":1,"11":2}}],["re",{"2":{"6":1,"10":1,"18":1,"38":1,"39":1,"46":1,"53":1,"57":1}}],["releases",{"2":{"46":1,"50":1,"58":1}}],["release",{"0":{"46":1},"2":{"44":1,"45":2,"48":1}}],["relevant",{"2":{"5":1}}],["relate",{"2":{"16":1}}],["related",{"2":{"1":2,"10":1,"16":1,"20":1,"24":1,"59":1,"60":1}}],["rely",{"2":{"6":1}}],["reject",{"2":{"2":1}}],["reason",{"2":{"38":1}}],["reasons",{"2":{"9":2,"54":1}}],["reach",{"2":{"24":1}}],["reading",{"0":{"59":1},"2":{"20":1}}],["read",{"2":{"10":1,"39":1}}],["readability",{"2":{"0":1}}],["realized",{"2":{"53":1}}],["really",{"2":{"2":1,"5":2,"10":1,"54":1,"57":1}}],["real",{"2":{"1":1,"16":1}}],["remake",{"2":{"51":1}}],["remains",{"2":{"25":1,"58":1}}],["remain",{"2":{"1":1}}],["remember",{"2":{"40":1,"42":1,"55":1}}],["removing",{"2":{"15":1}}],["remove",{"2":{"1":1,"15":1}}],["removed",{"2":{"1":1}}],["revisit",{"2":{"1":1}}],["repl",{"0":{"38":1},"2":{"38":2,"40":1,"42":1,"44":1,"45":1}}],["replaced",{"2":{"20":1,"40":1}}],["replace",{"2":{"7":1,"11":1,"36":1,"46":2,"51":1}}],["reputation",{"2":{"14":1}}],["repo",{"2":{"1":1}}],["repository",{"2":{"1":1,"50":1,"51":1}}],["reports",{"2":{"50":1,"58":1}}],["reporting",{"2":{"1":1}}],["report",{"2":{"0":1,"50":2}}],["represent",{"2":{"1":1,"21":1}}],["representation",{"2":{"1":1}}],["reuse",{"2":{"1":1}}],["reflexivity",{"2":{"54":1}}],["reflection",{"2":{"1":1}}],["refl",{"2":{"7":1,"31":1,"33":3,"34":2,"54":2,"55":1,"56":3,"57":1}}],["references",{"2":{"20":1,"22":1}}],["reference",{"2":{"1":1,"19":1,"20":2,"26":1}}],["rhombus",{"2":{"0":1}}],["kotlin",{"2":{"14":1}}],["knowledge",{"2":{"26":1}}],["known",{"2":{"14":2,"24":1,"54":1}}],["know",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"1":1,"5":1,"10":1,"33":1,"36":1,"37":1}}],["key",{"2":{"56":1,"58":1}}],["keywords",{"2":{"42":1,"58":1}}],["keyword",{"2":{"0":1,"36":1,"40":2,"41":1,"55":1}}],["keep",{"2":{"1":1,"14":1,"15":1}}],["k",{"2":{"0":1,"7":10}}],["skim",{"2":{"54":1}}],["smart",{"2":{"53":1}}],["smaller",{"2":{"10":1,"48":1}}],["src",{"2":{"51":1}}],["snippets",{"2":{"36":1}}],["squares",{"2":{"24":1}}],["squarep",{"2":{"21":2}}],["square",{"2":{"21":3}}],["scroll",{"2":{"58":1}}],["script",{"2":{"46":1}}],["scripts",{"2":{"45":1}}],["scary",{"2":{"42":1}}],["scale",{"2":{"21":1}}],["scala",{"2":{"14":1}}],["scope",{"2":{"6":2,"54":1}}],["split",{"2":{"18":1}}],["speaking",{"2":{"18":1}}],["special",{"2":{"14":1,"20":2,"54":1}}],["specify",{"2":{"38":1}}],["specifying",{"2":{"0":1}}],["specified",{"2":{"0":1,"13":1,"21":1}}],["spines",{"2":{"6":2}}],["signature",{"2":{"21":1,"56":1}}],["significant",{"2":{"14":1}}],["situation",{"2":{"10":1}}],["since",{"2":{"10":1,"11":1,"13":1,"20":1,"25":2,"38":1,"41":1}}],["size",{"2":{"6":6,"10":2,"43":2}}],["sized",{"2":{"6":1,"14":1,"19":1,"42":1,"54":1,"56":2}}],["sidebar",{"2":{"12":1}}],["sides",{"2":{"6":2}}],["side",{"2":{"6":2,"54":2,"56":2}}],["simeq",{"2":{"36":1}}],["simply",{"2":{"59":1}}],["simplified",{"2":{"55":1}}],["simplify",{"2":{"21":1}}],["simplicity",{"2":{"0":1,"20":1}}],["simplest",{"2":{"19":1}}],["simpler",{"2":{"15":1}}],["simple",{"2":{"11":2,"18":1,"19":1,"25":1,"44":1,"54":2}}],["similarly",{"2":{"13":1,"38":1}}],["similar",{"2":{"0":1,"2":1,"5":1,"10":1,"11":1,"38":2,"44":1}}],["sample",{"2":{"51":1}}],["same",{"2":{"0":1,"1":1,"3":1,"10":1,"36":1,"38":2,"39":1,"40":1,"51":1,"53":1,"56":1,"57":1}}],["safe",{"0":{"16":1},"2":{"14":1,"16":5,"54":1}}],["saying",{"2":{"57":1}}],["says",{"2":{"43":1}}],["say",{"2":{"5":1,"14":1,"25":1,"40":1}}],["said",{"2":{"1":2}}],["step",{"2":{"47":1,"56":1}}],["steps",{"2":{"43":1}}],["sterling",{"2":{"1":1,"59":1}}],["store",{"2":{"25":1}}],["story",{"2":{"21":1}}],["stdlib",{"2":{"18":1}}],["stuffs",{"2":{"16":1}}],["study",{"0":{"7":1}}],["stick",{"2":{"13":1}}],["still",{"2":{"1":1,"15":1,"56":2}}],["straightforward",{"2":{"19":1,"57":1}}],["structural",{"2":{"10":2}}],["strict",{"2":{"8":1}}],["stage",{"2":{"45":1}}],["stackexchange",{"2":{"36":1}}],["standalone",{"2":{"18":1}}],["standard",{"2":{"14":1,"55":1}}],["stated",{"2":{"57":1}}],["state",{"2":{"20":1}}],["stateful",{"2":{"19":1}}],["statements",{"2":{"10":1}}],["status",{"2":{"14":1}}],["stay",{"2":{"1":1,"15":1}}],["start",{"2":{"1":1,"10":1,"36":1,"38":2,"45":1}}],["styled",{"2":{"36":1}}],["style",{"0":{"13":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"1":1,"24":1}}],["shall",{"2":{"57":2}}],["share",{"2":{"0":1,"14":1}}],["shell",{"2":{"46":1}}],["short",{"2":{"39":2,"50":1}}],["shown",{"2":{"53":1}}],["showccr",{"2":{"50":1}}],["show",{"2":{"10":1,"38":1,"50":1,"53":3,"54":1,"56":3}}],["should",{"2":{"1":1,"5":1,"6":1,"10":1,"15":3,"16":3,"23":1,"25":1,"57":1,"58":4}}],["search",{"2":{"58":1}}],["server",{"2":{"44":1,"50":3,"58":2}}],["serialized",{"2":{"1":1}}],["serializable",{"2":{"1":1}}],["self",{"2":{"30":1}}],["section",{"2":{"40":1,"45":1}}],["secures",{"2":{"22":1}}],["second",{"0":{"23":1},"2":{"19":1,"20":1,"43":1}}],["semantics",{"2":{"55":1}}],["semantic",{"2":{"16":1}}],["separated",{"2":{"39":1,"40":1}}],["separate",{"2":{"11":1,"14":1}}],["sense",{"2":{"10":1,"19":1,"25":1}}],["settings",{"2":{"58":2}}],["settrunc",{"2":{"29":6}}],["setup",{"2":{"47":3}}],["setlength",{"2":{"36":3}}],["set",{"2":{"3":1,"5":2,"14":1,"16":1,"17":1,"28":4,"29":8,"41":1,"44":1}}],["sets",{"2":{"1":1}}],["seek",{"2":{"43":1}}],["seen",{"2":{"15":1}}],["seems",{"2":{"5":1,"16":1}}],["seem",{"2":{"4":1,"19":1}}],["see",{"2":{"1":1,"5":2,"12":1,"14":1,"20":1,"29":1,"39":1,"40":1,"54":1,"58":5}}],["several",{"2":{"1":1,"9":1,"21":1}}],["suggest",{"2":{"59":1}}],["sugar",{"2":{"3":1}}],["surprising",{"2":{"57":1}}],["sure",{"2":{"18":1,"20":1,"54":1,"58":1}}],["suffices",{"2":{"54":1}}],["sufficiently",{"2":{"52":1}}],["sudo",{"2":{"46":2}}],["suppresses",{"2":{"17":1}}],["supposed",{"2":{"6":1}}],["suppose",{"2":{"3":2,"4":2,"11":1,"53":1}}],["support",{"2":{"0":2,"1":2,"38":2,"51":1}}],["supported",{"2":{"0":1}}],["supports",{"2":{"0":1,"36":1,"38":1,"39":2,"40":1,"41":1,"50":1}}],["successful",{"2":{"58":1}}],["succ",{"2":{"36":3,"57":4}}],["such",{"2":{"7":1,"10":1,"14":4,"15":1,"17":1,"36":1,"44":2,"54":2,"57":1,"58":1}}],["suc",{"2":{"7":2,"10":2,"19":3,"20":1,"40":12,"41":2,"42":2,"43":3,"52":1,"55":10,"56":3,"57":2}}],["suceeded",{"2":{"1":1}}],["subset",{"2":{"40":1}}],["subst",{"2":{"33":11,"34":3,"35":6}}],["substitute",{"2":{"19":1,"20":1}}],["substituted",{"2":{"6":1}}],["substitution",{"0":{"34":1},"2":{"5":2,"6":1,"34":1,"44":1}}],["subλ",{"2":{"35":1}}],["subπ",{"2":{"33":1,"35":1}}],["sub",{"2":{"33":1,"34":1,"35":3}}],["subel",{"2":{"33":1}}],["subu",{"2":{"33":2}}],["subass",{"2":{"33":2,"34":1}}],["subid",{"2":{"33":1}}],["subtype",{"2":{"25":2}}],["subtypes",{"2":{"1":1}}],["subtyping",{"2":{"2":1,"25":2}}],["symmetric",{"2":{"57":1}}],["symmetry",{"2":{"54":1}}],["symbol",{"2":{"36":1}}],["synthesis",{"2":{"44":1}}],["synthesize",{"2":{"23":1}}],["syntactic",{"2":{"3":1}}],["syntax",{"0":{"27":1},"2":{"1":2,"3":1,"10":1,"12":1,"19":1,"21":1,"29":1,"40":1,"42":1,"44":1,"52":1,"53":1,"57":1}}],["systems",{"2":{"57":1}}],["system",{"2":{"0":1,"2":1,"4":1,"6":1,"44":1}}],["sort",{"2":{"24":1}}],["sorting",{"2":{"18":1}}],["sorry",{"2":{"17":1}}],["sounds",{"2":{"10":1}}],["sources",{"2":{"51":1}}],["source",{"0":{"50":1},"2":{"1":1,"5":1,"14":2,"46":1,"48":1,"51":1,"59":1}}],["so",{"0":{"20":1,"37":1,"58":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"5":2,"6":7,"10":6,"14":1,"15":2,"16":2,"19":4,"20":2,"21":2,"22":1,"24":3,"29":3,"38":1,"40":1,"41":2,"44":2,"50":2,"54":2,"55":1,"56":2,"57":3}}],["solving",{"2":{"6":1,"7":1}}],["solves",{"2":{"15":1}}],["solver",{"2":{"15":3}}],["solved",{"2":{"6":2,"20":5}}],["solve",{"2":{"0":1,"7":3,"20":1,"25":1}}],["solutions",{"2":{"7":1,"20":1}}],["solution",{"2":{"1":1,"6":1,"7":1,"11":1,"22":1,"23":2,"24":1}}],["somewhere",{"2":{"46":1}}],["somehow",{"2":{"22":1}}],["sometimes",{"2":{"16":2,"27":1}}],["something",{"2":{"7":1,"15":2,"23":1,"29":1,"37":1}}],["some",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"0":1,"1":5,"10":1,"12":2,"14":2,"15":1,"16":1,"17":4,"18":1,"19":1,"24":1,"25":1,"39":1,"42":2,"43":1,"52":1,"53":1,"54":2,"57":3,"58":1}}],["s",{"0":{"14":1,"15":1},"1":{"16":1,"17":1},"2":{"0":1,"1":1,"5":1,"7":2,"11":1,"14":5,"15":1,"16":1,"18":1,"19":3,"20":1,"21":2,"30":1,"31":1,"33":1,"34":6,"36":1,"38":1,"39":1,"40":2,"45":1,"46":3,"51":1,"52":3,"54":1,"56":2,"57":2,"59":1}}],["swift",{"2":{"0":1}}],["tccr",{"2":{"50":1}}],["ttt",{"2":{"35":1}}],["tmp",{"2":{"46":4}}],["tm",{"2":{"33":4,"34":4,"35":12}}],["tweaks",{"2":{"17":1}}],["tweak",{"2":{"15":1}}],["two",{"2":{"0":1,"1":1,"6":2,"11":1,"13":1,"14":1,"20":1,"43":1,"53":2,"54":2,"55":1,"57":3,"58":1}}],["tasks",{"2":{"50":1}}],["task",{"2":{"50":2}}],["takes",{"2":{"57":1}}],["take",{"2":{"43":1}}],["targets",{"2":{"36":1}}],["tarski",{"2":{"1":1,"25":1}}],["tactics",{"2":{"18":1}}],["talks",{"2":{"16":1}}],["talking",{"2":{"13":1}}],["talk",{"2":{"10":1,"25":1,"54":1}}],["tutorial",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1},"2":{"37":1,"39":2,"43":1,"44":4,"52":3,"54":1,"58":1}}],["turni",{"2":{"43":1}}],["turns",{"2":{"25":1}}],["turn",{"2":{"24":1}}],["turned",{"2":{"9":1,"14":1}}],["tuned",{"2":{"1":1}}],["typing",{"2":{"34":1,"38":2}}],["typeγ⊢a",{"2":{"33":1}}],["typeγ⊢a~",{"2":{"32":1,"33":1}}],["typeγ⊳a",{"2":{"32":1}}],["type​",{"2":{"32":1,"33":1}}],["typed",{"2":{"19":2,"20":1,"44":2,"53":1,"56":2}}],["typefamilies",{"2":{"13":1}}],["types",{"0":{"30":1,"33":1,"57":1},"1":{"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"1":9,"4":1,"5":1,"9":1,"10":1,"11":2,"14":1,"22":3,"23":1,"25":1,"26":1,"27":1,"29":1,"37":1,"40":1,"41":2,"42":1,"44":1,"54":1,"57":2}}],["type",{"0":{"1":1,"21":1,"30":2,"41":1,"42":1},"1":{"22":1,"23":1,"24":1,"25":1,"31":2,"32":2,"33":2,"34":2,"35":2},"2":{"1":18,"3":5,"5":3,"6":9,"7":3,"8":2,"10":2,"11":3,"14":1,"15":3,"19":8,"20":6,"21":16,"22":8,"23":3,"24":5,"25":8,"26":3,"28":1,"29":3,"31":3,"32":5,"33":9,"34":2,"35":2,"38":3,"40":2,"41":14,"42":10,"43":2,"44":3,"52":2,"53":6,"54":5,"55":1,"56":8,"57":8,"58":1}}],["ty",{"2":{"32":1,"33":10,"34":2,"35":3,"56":1}}],["tycking",{"2":{"6":1,"17":1}}],["techniques",{"2":{"54":1}}],["technical",{"2":{"54":1}}],["testcodecoveragereport",{"2":{"50":2}}],["tests",{"2":{"50":1}}],["tex",{"2":{"36":4}}],["textit",{"2":{"36":2}}],["textcolor",{"2":{"36":9}}],["textsf",{"2":{"28":3,"29":5}}],["text",{"2":{"5":9,"32":6,"33":4,"36":1,"58":1}}],["tempting",{"2":{"36":1,"55":1,"56":1}}],["telescope",{"2":{"19":2}}],["telling",{"2":{"53":1}}],["tell",{"2":{"10":1}}],["terminal",{"2":{"38":1}}],["termination",{"0":{"10":1},"2":{"10":8,"14":2}}],["terms",{"0":{"35":1},"2":{"1":2,"22":2,"23":1,"24":1,"38":1,"44":1}}],["term",{"2":{"1":1,"5":1,"8":1,"10":1,"19":1,"22":4,"25":1,"57":1}}],["trunc",{"2":{"29":3}}],["truncation",{"2":{"29":1}}],["true",{"2":{"1":1,"9":1,"53":3,"54":2}}],["trivial",{"2":{"57":1}}],["tries",{"2":{"22":1}}],["trick",{"2":{"5":1}}],["traditional",{"2":{"54":1}}],["traverse",{"2":{"44":1}}],["translated",{"2":{"57":1}}],["transitivity",{"2":{"54":1}}],["transport",{"2":{"31":1,"33":2,"34":1,"35":3}}],["transformed",{"2":{"20":1}}],["transform",{"2":{"20":1}}],["tracker",{"2":{"16":1}}],["trees",{"2":{"18":1}}],["treatment",{"2":{"5":1}}],["try",{"2":{"1":2,"7":2,"23":1,"48":1,"54":1,"56":1}}],["trying",{"2":{"1":1,"23":1}}],["time",{"2":{"0":1,"9":1,"22":1,"46":1,"53":1}}],["tighter",{"2":{"0":6,"34":3,"40":1,"42":1,"55":1,"56":1}}],["those",{"2":{"52":1}}],["thoughts",{"2":{"24":1}}],["though",{"2":{"0":1,"57":1}}],["through",{"2":{"40":1}}],["throughout",{"2":{"8":1}}],["three",{"2":{"18":3,"57":1}}],["threefold",{"2":{"14":1}}],["things",{"2":{"10":1,"54":1}}],["thing",{"2":{"9":1,"10":1,"25":1,"40":1}}],["think",{"2":{"0":1,"7":4,"9":1,"10":2,"11":1,"15":1,"16":1,"24":1,"54":1}}],["third",{"0":{"24":1},"2":{"1":1}}],["this",{"2":{"0":3,"1":8,"2":1,"3":1,"4":2,"5":4,"6":4,"7":3,"8":1,"10":13,"11":1,"14":2,"15":1,"19":4,"20":1,"21":4,"22":2,"23":2,"24":1,"25":2,"26":1,"29":3,"36":1,"37":1,"38":1,"39":2,"40":3,"42":1,"43":4,"45":1,"52":3,"53":3,"54":9,"55":2,"56":4,"57":7,"58":2,"59":4,"60":1}}],["thanks",{"2":{"20":1}}],["than",{"2":{"0":4,"20":1,"21":1,"40":1,"48":1}}],["that",{"2":{"0":2,"1":4,"2":1,"4":1,"5":1,"6":1,"7":2,"8":1,"9":3,"10":5,"11":4,"12":1,"14":6,"15":2,"16":5,"17":2,"19":3,"20":5,"22":1,"25":3,"33":1,"38":2,"40":1,"41":2,"42":1,"43":1,"45":1,"53":1,"54":8,"55":5,"56":5,"57":7,"58":1,"59":2}}],["thesis",{"2":{"31":1}}],["these",{"2":{"6":2,"7":1,"13":1,"14":1,"16":1,"18":1,"20":1,"21":2,"32":1,"40":1,"42":1,"54":1,"57":4}}],["theories",{"2":{"53":1}}],["theorems",{"2":{"57":1}}],["theorem",{"2":{"11":1,"44":1,"52":2,"53":4,"54":1}}],["theory",{"0":{"1":1,"30":2},"1":{"31":2,"32":2,"33":2,"34":2,"35":2},"2":{"1":4,"11":2,"14":1,"26":2,"53":4,"56":1,"57":1}}],["their",{"2":{"6":1,"57":1}}],["then",{"2":{"4":2,"5":1,"6":2,"10":3,"15":1,"16":1,"18":1,"36":2,"40":1,"41":1,"43":2,"50":1,"54":1,"55":1,"56":2,"58":3}}],["they",{"2":{"1":2,"6":1,"10":2,"15":1,"22":1,"42":1,"53":1,"56":2,"57":1}}],["them",{"2":{"1":2,"6":1,"7":1,"20":1,"40":2,"54":2,"55":1}}],["there",{"2":{"0":1,"10":3,"11":1,"16":1,"20":1,"40":1,"41":1,"42":1,"43":1,"45":1,"48":1,"53":1,"54":2,"58":3,"59":1}}],["the",{"0":{"20":1,"21":1,"38":1,"44":1},"1":{"22":1,"23":1,"24":1,"25":1},"2":{"0":11,"1":34,"2":2,"3":13,"4":4,"5":15,"6":20,"7":11,"8":3,"10":26,"11":6,"12":4,"14":7,"15":10,"16":5,"17":3,"18":4,"19":41,"20":19,"21":11,"22":10,"23":7,"24":3,"25":17,"26":1,"29":8,"30":1,"32":5,"33":11,"34":2,"35":2,"36":11,"38":6,"39":4,"40":18,"41":6,"42":6,"43":6,"44":6,"45":8,"46":2,"47":3,"48":3,"49":1,"50":4,"51":3,"53":11,"54":18,"55":7,"56":18,"57":15,"58":20,"59":2,"60":1}}],["tl",{"2":{"0":1}}],["t",{"2":{"0":1,"5":1,"10":1,"14":1,"19":1,"25":1,"34":5,"35":7,"38":2,"40":1,"41":1,"42":1,"54":1,"58":1}}],["top",{"2":{"40":1}}],["toggle",{"2":{"38":1}}],["together",{"2":{"6":1,"57":1}}],["tools",{"2":{"44":1}}],["toolchain",{"2":{"36":1}}],["tool",{"2":{"14":1,"36":1}}],["too",{"2":{"13":1,"22":1,"23":1,"42":1,"43":1}}],["took",{"2":{"1":1}}],["told",{"2":{"7":1,"25":1}}],["touch",{"2":{"5":1}}],["total",{"2":{"1":1}}],["towards",{"2":{"1":1}}],["to",{"0":{"11":1},"2":{"0":9,"1":27,"2":3,"4":6,"5":7,"6":5,"7":5,"8":3,"9":5,"10":9,"11":3,"13":1,"14":8,"15":4,"16":9,"17":1,"18":1,"19":5,"20":9,"21":9,"22":6,"23":3,"24":3,"25":6,"27":3,"29":2,"30":1,"32":2,"33":4,"34":1,"35":1,"36":9,"37":1,"38":10,"39":4,"40":10,"41":2,"42":4,"43":5,"44":2,"45":2,"46":3,"47":2,"50":7,"51":5,"52":2,"53":4,"54":7,"55":4,"56":11,"57":4,"58":10,"59":4,"60":1}}],["date",{"2":{"45":1}}],["datakinds",{"2":{"42":1}}],["data",{"2":{"10":2,"36":4,"37":1,"40":2,"42":1}}],["during",{"2":{"24":1,"55":1}}],["due",{"2":{"1":5}}],["d",{"2":{"18":1,"20":3}}],["docs",{"2":{"58":1}}],["documents",{"2":{"59":1}}],["document",{"2":{"36":1,"44":1}}],["documentation",{"2":{"19":1}}],["downloading",{"2":{"50":1}}],["download",{"0":{"46":1},"2":{"46":1,"49":1,"58":1}}],["down",{"2":{"21":1,"58":1}}],["dot",{"2":{"19":1}}],["dotted",{"2":{"19":1}}],["doing",{"2":{"11":1}}],["don",{"2":{"5":1,"10":1,"14":1,"25":1,"38":1,"40":1,"41":1,"42":1,"54":1,"58":1}}],["do",{"2":{"1":3,"10":1,"13":1,"19":1,"20":1,"22":2,"24":1,"25":1,"40":3,"46":1,"51":1,"52":1,"54":2,"55":1,"57":1}}],["does",{"2":{"0":1,"1":1,"8":1,"19":2,"21":1,"25":1,"38":1,"40":1,"43":1,"44":1,"53":1,"57":1}}],["dir",{"2":{"51":2}}],["directory",{"2":{"51":3,"58":1}}],["directed",{"2":{"22":1,"44":1}}],["directly",{"2":{"5":1,"23":1,"40":1,"43":1,"54":1}}],["direct",{"2":{"1":1}}],["dimensional",{"2":{"44":1}}],["dimensions",{"2":{"21":1}}],["differences",{"2":{"40":1}}],["different",{"2":{"11":1,"14":2,"36":1,"51":1}}],["difficult",{"2":{"14":1}}],["discoverable",{"2":{"58":1}}],["discussion",{"2":{"16":1}}],["discuss",{"2":{"14":1,"40":1,"58":1}}],["discussed",{"2":{"2":1,"24":1}}],["distribution",{"2":{"58":1}}],["distinct",{"2":{"53":1,"57":2}}],["distinguishes",{"2":{"54":1}}],["distinguish",{"2":{"40":1,"51":1}}],["displayed",{"2":{"45":1}}],["disabling",{"2":{"16":1,"17":2}}],["disabledness",{"2":{"16":1}}],["disable",{"2":{"14":3,"15":1,"16":1}}],["did",{"2":{"7":1,"21":1}}],["didn",{"2":{"0":1}}],["desugaring",{"2":{"57":1}}],["describes",{"2":{"55":1}}],["design",{"0":{"18":1},"2":{"18":1,"59":1}}],["designed",{"2":{"0":1,"44":1}}],["dev",{"2":{"46":1}}],["developers",{"2":{"26":1,"60":1}}],["development",{"2":{"1":2,"45":1}}],["demo",{"2":{"44":1}}],["demand",{"2":{"18":1}}],["details",{"2":{"29":1}}],["detect",{"2":{"1":1,"2":1}}],["denotes",{"2":{"41":1}}],["denote",{"2":{"27":2,"40":1,"41":2}}],["delete",{"2":{"21":1}}],["deletion",{"2":{"14":1}}],["debugging",{"2":{"15":1}}],["declares",{"2":{"40":1}}],["decoded",{"2":{"25":1}}],["decided",{"2":{"21":2}}],["decide",{"2":{"15":2,"16":1}}],["decreasing",{"2":{"10":1}}],["dependency>",{"2":{"51":2}}],["dependency",{"2":{"51":1}}],["dependencies",{"2":{"50":1,"51":1}}],["dependent",{"2":{"10":1,"11":1,"38":1,"42":1,"44":2,"50":1}}],["depending",{"2":{"36":1}}],["depth",{"2":{"14":1}}],["deal",{"2":{"1":1,"20":1}}],["default",{"2":{"16":1,"39":1,"50":1}}],["defeated",{"2":{"6":1}}],["definecolor",{"2":{"36":9}}],["define",{"2":{"1":1,"10":1,"11":1,"40":1,"41":2,"42":1,"46":1,"54":2,"55":1,"56":1,"57":1}}],["defined",{"2":{"1":3,"32":1,"33":1,"40":2,"42":2,"54":1,"57":4}}],["defining",{"2":{"1":1}}],["definitions",{"2":{"10":1,"18":1,"38":1,"44":1,"56":1,"58":1}}],["definitionally",{"2":{"3":1,"4":2,"5":1}}],["definitional",{"0":{"2":1,"4":1},"1":{"3":1,"4":1,"5":1},"2":{"4":1,"5":3,"9":1,"55":1}}],["definition",{"2":{"0":1,"1":3,"3":1,"19":1,"30":1,"41":1,"43":1,"54":2,"56":4}}],["def",{"2":{"0":4,"7":1,"21":2,"31":4,"33":1,"40":6,"41":4,"42":3,"43":2,"52":1,"53":5,"54":6,"55":3,"56":7,"57":5}}],["dr",{"2":{"0":1}}],["bunch",{"2":{"54":1}}],["build",{"0":{"50":1},"2":{"46":1,"47":1,"48":1,"50":8,"51":1}}],["bug",{"2":{"37":1,"52":1}}],["but",{"2":{"0":4,"1":2,"6":2,"7":3,"8":1,"10":5,"14":2,"15":2,"19":1,"20":2,"21":2,"25":2,"26":1,"36":1,"38":1,"40":1,"43":3,"44":1,"45":1,"51":1,"54":2,"55":1,"56":1,"57":1}}],["bsol",{"2":{"31":4,"52":1,"54":2}}],["browser",{"2":{"50":1}}],["brouwertree",{"2":{"10":3}}],["braces",{"2":{"41":2}}],["branches",{"2":{"15":1}}],["branch",{"2":{"10":8,"45":1}}],["break",{"2":{"16":1}}],["breaking",{"2":{"12":1,"48":1}}],["blown",{"2":{"15":1}}],["blogs",{"0":{"12":1}}],["blog",{"2":{"8":1,"10":1,"12":1,"26":1}}],["blocked",{"2":{"7":8}}],["bat",{"2":{"58":1}}],["backend",{"2":{"36":1}}],["ban",{"2":{"10":1}}],["bashecho",{"2":{"46":1}}],["bashrc",{"2":{"46":3}}],["bash",{"2":{"46":2,"50":1}}],["bashjava",{"2":{"38":1}}],["bashaya",{"2":{"38":1}}],["base",{"2":{"15":1,"18":2}}],["based",{"2":{"9":1,"10":1}}],["basically",{"2":{"11":1,"57":2}}],["basic",{"2":{"2":1,"4":1,"13":1,"14":1,"18":1,"52":2,"58":1}}],["basis",{"2":{"1":1}}],["bad",{"2":{"7":1,"10":24,"15":1}}],["barely",{"2":{"14":1}}],["bare",{"2":{"5":1}}],["box",{"2":{"58":1}}],["bottom",{"2":{"58":1,"59":1}}],["both",{"2":{"19":1,"41":1,"54":1}}],["bonus",{"2":{"40":1,"43":1}}],["body",{"2":{"19":1,"20":1,"55":1}}],["bodies",{"2":{"1":1,"40":1}}],["bout",{"2":{"16":1}}],["boundary",{"2":{"23":2,"25":1}}],["boundaries",{"2":{"6":1}}],["bound",{"2":{"0":1}}],["bool",{"2":{"10":2,"11":1,"53":5,"57":1}}],["bootstrapping",{"2":{"1":1}}],["bibliography",{"2":{"59":1}}],["bidirectional",{"2":{"23":1,"24":1}}],["big",{"2":{"14":1,"29":6}}],["bishop",{"2":{"1":1}}],["bin",{"2":{"45":1,"46":2,"58":1}}],["binop",{"2":{"41":2}}],["bindings",{"2":{"19":2,"20":2}}],["binding",{"2":{"1":1,"6":1}}],["bind",{"2":{"0":1}}],["binary",{"0":{"0":1,"49":1},"2":{"0":1,"41":1,"44":1}}],["b",{"2":{"0":3,"1":1,"3":2,"6":4,"7":2,"10":3,"20":4,"21":10,"22":2,"27":2,"29":17,"31":14,"33":4,"35":11,"52":3,"54":20,"55":5,"56":10,"57":6}}],["byte",{"2":{"48":1}}],["by",{"2":{"0":1,"1":6,"5":1,"6":2,"14":3,"16":2,"19":3,"20":1,"29":1,"38":3,"39":3,"40":2,"41":1,"44":1,"50":1,"53":1,"54":3,"57":1,"60":1}}],["beware",{"2":{"59":1}}],["beyond",{"2":{"54":1}}],["begin",{"2":{"29":3}}],["been",{"2":{"25":1}}],["below",{"2":{"21":1,"26":1,"32":1,"33":1,"36":1,"45":1,"46":1,"56":1}}],["believe",{"2":{"6":1,"33":1}}],["behave",{"2":{"16":1}}],["before",{"2":{"12":1,"23":1}}],["bertrand",{"2":{"10":1}}],["becomes",{"2":{"6":1,"19":1,"40":1}}],["because",{"2":{"2":1,"5":1,"6":2,"10":1,"19":1,"22":1,"25":1,"38":1,"40":1,"41":1,"54":1,"56":1,"57":2}}],["between",{"2":{"6":1,"53":1,"54":3,"56":1,"57":1}}],["better",{"2":{"0":1,"40":1,"42":1,"44":1}}],["benefit",{"2":{"1":1}}],["being",{"2":{"1":1,"5":1,"7":1,"9":2,"54":1,"57":1}}],["be",{"2":{"0":2,"1":8,"2":2,"5":1,"6":3,"7":2,"8":1,"9":1,"10":1,"13":2,"15":5,"16":4,"18":1,"19":3,"20":4,"24":1,"25":2,"29":1,"40":4,"41":2,"43":1,"45":1,"48":1,"54":1,"55":1,"56":1,"57":3,"58":1,"59":1}}],["wget",{"2":{"46":1}}],["would",{"2":{"19":2,"38":1}}],["worried",{"2":{"25":1}}],["word",{"2":{"16":1}}],["words",{"2":{"10":1}}],["worse",{"2":{"10":1,"21":1}}],["world",{"2":{"1":1,"16":1}}],["workflow",{"2":{"47":1}}],["working",{"0":{"38":1,"39":1},"2":{"29":1,"56":2}}],["worked",{"2":{"24":1}}],["work",{"2":{"1":2,"11":1,"12":1,"38":2,"40":1,"42":1,"56":1,"57":1}}],["works",{"2":{"0":1,"33":1,"38":1,"41":1}}],["w",{"2":{"10":1}}],["wrapping",{"2":{"29":1}}],["wrote",{"2":{"9":1,"46":1}}],["written",{"2":{"3":1,"12":1,"40":1}}],["write",{"2":{"0":1,"3":1,"19":1,"21":1,"22":1,"36":1,"39":1,"41":1,"43":1}}],["wavy",{"2":{"58":1}}],["wait",{"2":{"58":1}}],["was",{"2":{"25":1}}],["warning",{"2":{"7":1}}],["want",{"2":{"1":1,"2":2,"3":1,"4":1,"5":1,"7":1,"9":2,"10":1,"14":1,"16":1,"22":1,"36":1,"40":2,"43":1,"46":1,"47":1,"56":1}}],["ways",{"0":{"11":1},"2":{"58":1}}],["way",{"2":{"0":1,"11":1,"41":1,"53":1,"55":1,"56":1,"57":1}}],["wixtoolset",{"2":{"50":1}}],["windows",{"2":{"46":2,"50":2,"58":1}}],["wish",{"2":{"1":1}}],["will",{"2":{"0":2,"1":14,"2":1,"5":1,"7":4,"8":1,"10":1,"15":4,"16":2,"17":1,"19":3,"20":1,"22":1,"23":1,"29":1,"36":1,"40":1,"41":1,"42":1,"43":1,"45":1,"47":1,"48":1,"52":1,"54":2,"57":1,"59":1}}],["without",{"2":{"5":2,"15":1,"21":1,"40":2,"44":1}}],["with",{"0":{"2":1,"38":1,"39":1},"1":{"3":1,"4":1,"5":1},"2":{"0":6,"1":4,"2":2,"5":1,"6":3,"7":3,"10":3,"11":2,"12":1,"14":1,"15":1,"17":1,"19":2,"20":2,"21":1,"22":2,"23":1,"24":1,"36":4,"38":1,"39":1,"40":4,"42":1,"43":1,"46":2,"47":1,"49":1,"50":2,"51":3,"52":1,"55":1,"56":3,"57":5,"58":1}}],["whnf",{"2":{"38":1}}],["why",{"2":{"11":1,"19":1}}],["where",{"2":{"3":1,"6":3,"10":2,"11":1,"19":1,"20":1,"36":4,"40":1,"42":1,"54":1,"56":1}}],["whenever",{"2":{"5":1}}],["when",{"2":{"0":1,"6":1,"15":1,"16":1,"20":4,"21":1,"22":1,"23":1,"25":1,"40":1,"43":1,"56":1}}],["while",{"2":{"1":2}}],["which",{"2":{"0":3,"1":10,"4":1,"6":1,"8":1,"9":1,"10":2,"11":4,"17":2,"19":2,"20":2,"22":1,"23":1,"29":1,"32":1,"33":1,"52":1,"54":1,"55":2,"56":1,"57":3,"58":1}}],["whose",{"2":{"3":2}}],["who",{"2":{"1":1}}],["what",{"2":{"1":1,"6":1,"7":1,"10":1,"20":1,"36":1,"43":1,"57":1}}],["weak",{"2":{"13":1}}],["weaker",{"2":{"11":1}}],["well",{"2":{"5":1,"14":1,"16":1,"19":2,"20":1,"22":1,"44":1,"55":2,"56":2,"57":1}}],["website",{"2":{"1":1}}],["we",{"2":{"0":8,"1":23,"2":4,"3":2,"4":2,"5":10,"6":2,"7":4,"10":9,"11":6,"14":1,"15":11,"16":5,"17":1,"18":2,"19":5,"20":13,"21":7,"22":7,"23":2,"24":2,"25":3,"38":1,"40":8,"41":3,"42":1,"43":9,"45":1,"48":1,"51":2,"53":2,"54":13,"55":1,"56":8,"57":6}}],["aarch64",{"2":{"46":1}}],["aaa",{"2":{"33":1}}],["apart",{"2":{"41":1,"59":1}}],["appends",{"2":{"56":1}}],["append",{"2":{"42":1,"56":1}}],["appeared",{"2":{"21":1}}],["appear",{"2":{"16":1}}],["app",{"2":{"35":3}}],["apply",{"2":{"15":1,"23":2}}],["applications",{"2":{"22":3,"24":1,"50":1}}],["application",{"2":{"3":1,"22":2,"24":1,"25":1,"57":1}}],["approach",{"2":{"1":1}}],["aγ⊢t",{"2":{"35":2}}],["a~",{"2":{"32":1}}],["a~b",{"2":{"29":4}}],["a~i",{"2":{"27":1}}],["a=π",{"2":{"28":1}}],["a≠π",{"2":{"28":1}}],["a≠",{"2":{"28":1}}],["amp",{"2":{"22":1,"29":6,"59":1}}],["a₋₁",{"2":{"21":6}}],["a₋₀",{"2":{"21":6}}],["a₁₋",{"2":{"21":6}}],["a₁₁",{"2":{"21":6}}],["a₁₀",{"2":{"21":6}}],["a₀₋",{"2":{"21":6}}],["a₀₁",{"2":{"21":6}}],["a₀₀",{"2":{"21":6}}],["across",{"2":{"53":1}}],["activate",{"2":{"58":1}}],["action",{"2":{"54":1}}],["actions",{"0":{"47":1},"2":{"47":1}}],["actually",{"2":{"10":2,"19":2,"21":1,"22":1,"57":1}}],["accepted",{"2":{"10":1}}],["accessible",{"2":{"19":1}}],["access",{"2":{"4":1,"5":1,"40":1}}],["according",{"2":{"6":1,"22":1}}],["avoiding",{"2":{"13":1}}],["avoid",{"2":{"9":1,"40":1,"54":1,"56":1}}],["available",{"2":{"2":1,"15":1,"42":1,"44":1,"46":1}}],["against",{"2":{"22":1,"23":1}}],["again",{"2":{"20":1}}],["aggressively",{"2":{"14":1}}],["ago",{"2":{"9":1}}],["agda",{"0":{"13":1,"14":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"0":3,"1":1,"6":1,"7":3,"10":3,"13":2,"14":6,"16":4,"19":3,"21":3,"24":1,"27":1,"38":1,"44":1,"57":1}}],["after",{"2":{"6":1,"45":1}}],["attributes",{"2":{"36":1}}],["attach",{"2":{"29":1}}],["attempt",{"0":{"22":1,"23":1,"24":1}}],["at",{"2":{"6":1,"10":1,"14":1,"17":1,"25":1,"29":1,"43":2,"45":1,"54":1,"58":1}}],["axioms",{"2":{"11":4,"44":1}}],["axiom",{"2":{"1":1}}],["artifacts",{"2":{"50":1}}],["arbitrary",{"2":{"40":1}}],["around",{"2":{"29":1}}],["argument",{"2":{"16":1}}],["arguments",{"2":{"1":1,"7":1,"10":2,"13":1,"23":2,"44":1}}],["arend",{"2":{"3":1,"18":1,"44":1}}],["are",{"0":{"8":1,"58":1},"1":{"9":1,"10":1,"11":1},"2":{"0":4,"1":6,"6":2,"7":1,"10":4,"11":2,"12":1,"15":1,"16":1,"17":1,"19":3,"20":4,"38":1,"39":2,"40":4,"41":4,"42":3,"44":1,"48":1,"50":1,"51":1,"52":1,"53":2,"54":5,"55":1,"56":2,"57":6,"58":2,"59":2}}],["abs",{"2":{"57":2}}],["abstraction",{"2":{"54":1,"57":1}}],["abstract",{"2":{"44":1}}],["abandoned",{"2":{"15":1}}],["above",{"2":{"5":2,"21":1,"25":1,"42":1,"47":1,"54":2}}],["about",{"2":{"1":1,"5":1,"6":1,"7":1,"10":1,"13":1,"19":1,"25":2,"37":1,"39":1,"43":1,"54":4,"57":1}}],["able",{"2":{"1":1}}],["abusing",{"2":{"0":1}}],["automagically",{"2":{"39":1,"41":1}}],["automatically",{"2":{"24":1,"38":1,"40":1}}],["automatic",{"2":{"1":1}}],["authors",{"2":{"1":1}}],["along",{"2":{"54":2}}],["alongside",{"2":{"42":1}}],["aliases",{"2":{"41":1}}],["alias",{"2":{"38":1}}],["align",{"2":{"29":6}}],["algebraic",{"2":{"37":1}}],["algorithms",{"2":{"17":1}}],["algorithm",{"2":{"6":1,"7":1,"15":2,"19":3,"20":1,"23":1,"25":1}}],["alternative",{"0":{"11":1},"2":{"53":1}}],["altenkirch",{"2":{"1":1}}],["always",{"2":{"5":2,"6":1,"48":1}}],["also",{"2":{"1":2,"10":2,"13":1,"14":1,"15":2,"25":1,"39":1,"40":1,"41":1,"54":1,"55":1,"56":1,"59":1}}],["alphaα",{"2":{"1":1}}],["allows",{"2":{"19":1,"40":1}}],["allowed",{"2":{"10":1}}],["allowing",{"2":{"10":1}}],["allow",{"2":{"10":1,"15":1,"40":1}}],["all",{"2":{"1":2,"3":3,"6":1,"16":1,"21":1,"55":1}}],["already",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"0":2,"1":1,"3":1,"20":1,"25":1,"33":1,"54":1,"57":1}}],["advanced",{"2":{"54":1,"58":1}}],["advantages",{"2":{"1":1}}],["ad",{"0":{"10":1}}],["adapt",{"2":{"1":3}}],["additional",{"2":{"57":1}}],["addition",{"2":{"40":1,"56":1}}],["adding",{"2":{"10":1,"14":1,"15":1}}],["added",{"2":{"6":1}}],["address",{"2":{"0":1}}],["add",{"2":{"0":1,"1":2,"2":1,"15":2,"19":1,"20":1,"21":1,"36":1,"43":1,"55":1}}],["away",{"0":{"1":1},"2":{"1":2}}],["asking",{"2":{"9":1}}],["ass",{"2":{"34":1}}],["assistants",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1}}],["assistant",{"2":{"14":1,"43":1,"44":1,"57":1}}],["assumes",{"2":{"26":1}}],["assumption",{"2":{"10":6}}],["assuming",{"2":{"1":1}}],["assoc",{"2":{"6":10,"7":14,"56":10}}],["associative",{"2":{"0":2,"40":1,"42":1,"56":1}}],["associativity",{"2":{"0":3,"6":2,"56":1}}],["associativities",{"2":{"0":1}}],["as",{"2":{"0":4,"1":3,"3":3,"5":1,"10":1,"11":1,"14":4,"15":3,"16":2,"17":1,"21":3,"22":1,"35":2,"36":1,"38":3,"39":2,"40":3,"41":3,"42":1,"44":2,"46":1,"50":2,"53":1,"54":5,"55":3,"57":2,"58":1}}],["annotate",{"2":{"22":2}}],["annotations",{"2":{"1":1}}],["anonymous",{"0":{"3":1},"2":{"3":1}}],["another",{"2":{"0":1,"2":1,"10":1,"20":1,"52":1}}],["angiuli",{"2":{"1":1,"25":1,"31":1}}],["an",{"2":{"0":2,"1":2,"3":1,"5":2,"7":1,"9":1,"14":1,"15":1,"16":3,"17":2,"19":1,"20":1,"24":1,"25":1,"32":1,"33":2,"34":1,"35":1,"37":2,"38":1,"39":1,"40":2,"41":1,"44":1,"45":2,"51":1,"52":1,"54":2,"57":4,"58":1}}],["anyway",{"2":{"16":1,"24":1,"57":1}}],["anything",{"2":{"5":1}}],["any",{"2":{"0":1,"1":1,"7":3,"15":2,"24":1,"36":1,"38":1,"58":1}}],["and",{"0":{"19":1,"55":1},"1":{"20":1},"2":{"0":7,"1":12,"2":2,"3":1,"5":2,"6":3,"7":2,"9":1,"10":5,"11":1,"13":3,"14":4,"15":4,"16":3,"17":3,"19":7,"20":5,"21":5,"22":3,"23":1,"25":1,"26":2,"27":1,"29":2,"32":1,"36":2,"37":1,"38":4,"39":1,"40":5,"41":5,"42":2,"43":2,"44":7,"45":2,"46":1,"48":1,"49":2,"50":5,"51":1,"53":4,"54":14,"55":2,"56":4,"57":8,"58":3,"59":1}}],["a",{"2":{"0":15,"1":22,"2":1,"3":8,"4":4,"5":20,"6":14,"7":24,"9":3,"10":7,"11":6,"14":8,"15":3,"16":6,"17":2,"19":19,"20":33,"21":49,"22":11,"23":10,"24":4,"25":4,"26":2,"27":5,"28":6,"29":63,"30":1,"31":20,"33":23,"34":8,"35":22,"36":4,"37":1,"38":3,"39":1,"40":11,"41":17,"42":33,"43":4,"44":3,"45":1,"46":1,"50":3,"51":6,"52":10,"53":4,"54":60,"55":9,"56":46,"57":24,"58":8,"59":3,"60":1}}],["ayaversion",{"2":{"51":1}}],["ayalocalvar",{"2":{"36":1}}],["ayacall",{"2":{"36":1}}],["ayacomment",{"2":{"36":3}}],["ayaconstructor",{"2":{"36":5}}],["ayafield",{"2":{"36":3}}],["ayafn",{"2":{"36":3}}],["ayaprimitive",{"2":{"36":3}}],["ayageneralized",{"2":{"36":3}}],["ayastruct",{"2":{"36":3}}],["ayadata",{"2":{"36":7}}],["ayakeyword",{"2":{"36":5}}],["aya>",{"2":{"36":1}}],["aya",{"0":{"0":1,"12":1,"15":1,"19":1,"40":1,"44":1,"45":1,"47":1,"51":1},"1":{"16":1,"17":1,"20":1,"46":1,"47":1,"48":1,"49":1,"50":1},"2":{"0":2,"1":6,"7":3,"12":1,"15":1,"16":1,"19":2,"21":1,"24":1,"29":1,"36":6,"37":1,"38":5,"39":6,"40":4,"41":4,"42":2,"43":1,"44":3,"45":3,"46":13,"47":7,"48":1,"50":3,"51":7,"52":2,"53":2,"54":3,"55":1,"57":3,"58":8,"59":1,"60":2}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.BipGruSN.js b/assets/chunks/VPLocalSearchBox.BipGruSN.js new file mode 100644 index 0000000..aa93eae --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.BipGruSN.js @@ -0,0 +1,7 @@ +var Nt=Object.defineProperty;var Ft=(a,e,t)=>e in a?Nt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Re=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ot,p as se,h as pe,ah as Xe,ai as Rt,aj as Ct,q as je,ak as Mt,d as At,D as ye,al as et,am as Lt,an as Dt,s as zt,ao as Pt,v as Ce,P as ue,O as we,ap as jt,aq as Vt,W as $t,R as Bt,$ as Wt,o as q,b as Kt,j as S,a0 as Jt,k as D,ar as Ut,as as qt,at as Gt,c as Y,n as tt,e as xe,C as st,F as nt,a as de,t as he,au as Ht,av as it,aw as Qt,a7 as Yt,ad as Zt,ax as Xt,_ as es}from"./framework.BnE-uSbk.js";import{u as ts,c as ss}from"./theme.DeEHWU5r.js";const ns={root:()=>Ot(()=>import("./@localSearchIndexroot.DpLJ-EhC.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=vt.join(","),mt=typeof Element>"u",ie=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ke=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Ne=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},is=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(Ne(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&ie.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Ne(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ie.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),p=!Ne(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&p){var b=a(v===!0?i.children:v.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ne=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||is(e))&&!yt(e)?0:e.tabIndex},rs=function(e,t){var s=ne(e);return s<0&&t&&!yt(e)?0:s},as=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},os=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},cs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ie.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=ke(e);if(l&&!l.shadowRoot&&n(l)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(fs(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},vs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},gs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=rs(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(as).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},bs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Ve.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ms}):s=gt(e,t.includeContainer,Ve.bind(null,t)),gs(s)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Fe.bind(null,t)),s},re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,Ie)===!1?!1:Ve(t,e)},ws=vt.concat("iframe").join(","),Me=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ie.call(e,ws)===!1?!1:Fe(t,e)};/*! +* focus-trap 7.6.0 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function xs(a,e,t){return(e=_s(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function at(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ot(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Es=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Ts=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Is=function(e){return ve(e)&&!e.shiftKey},ks=function(e){return ve(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ut=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},fe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?g-1:0),E=1;E=0)d=s.activeElement;else{var u=i.tabbableGroups[0],g=u&&u.firstTabbableNode;d=g||h("fallbackFocus")}if(!d)throw new Error("Your focus-trap needs to have at least one focusable element");return d},p=function(){if(i.containerGroups=i.containers.map(function(d){var u=bs(d,r.tabbableOptions),g=ys(d,r.tabbableOptions),_=u.length>0?u[0]:void 0,E=u.length>0?u[u.length-1]:void 0,N=g.find(function(f){return re(f)}),F=g.slice().reverse().find(function(f){return re(f)}),m=!!u.find(function(f){return ne(f)>0});return{container:d,tabbableNodes:u,focusableNodes:g,posTabIndexesFound:m,firstTabbableNode:_,lastTabbableNode:E,firstDomTabbableNode:N,lastDomTabbableNode:F,nextTabbableNode:function(T){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,C=u.indexOf(T);return C<0?A?g.slice(g.indexOf(T)+1).find(function(M){return re(M)}):g.slice(0,g.indexOf(T)).reverse().find(function(M){return re(M)}):u[C+(A?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(d){return d.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(d){return d.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(d){var u=d.activeElement;if(u)return u.shadowRoot&&u.shadowRoot.activeElement!==null?b(u.shadowRoot):u},y=function(d){if(d!==!1&&d!==b(document)){if(!d||!d.focus){y(v());return}d.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=d,Es(d)&&d.select()}},x=function(d){var u=h("setReturnFocus",d);return u||(u===!1?!1:d)},w=function(d){var u=d.target,g=d.event,_=d.isBackward,E=_===void 0?!1:_;u=u||Se(g),p();var N=null;if(i.tabbableGroups.length>0){var F=c(u,g),m=F>=0?i.containerGroups[F]:void 0;if(F<0)E?N=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:N=i.tabbableGroups[0].firstTabbableNode;else if(E){var f=ut(i.tabbableGroups,function(L){var j=L.firstTabbableNode;return u===j});if(f<0&&(m.container===u||Me(u,r.tabbableOptions)&&!re(u,r.tabbableOptions)&&!m.nextTabbableNode(u,!1))&&(f=F),f>=0){var T=f===0?i.tabbableGroups.length-1:f-1,A=i.tabbableGroups[T];N=ne(u)>=0?A.lastTabbableNode:A.lastDomTabbableNode}else ve(g)||(N=m.nextTabbableNode(u,!1))}else{var C=ut(i.tabbableGroups,function(L){var j=L.lastTabbableNode;return u===j});if(C<0&&(m.container===u||Me(u,r.tabbableOptions)&&!re(u,r.tabbableOptions)&&!m.nextTabbableNode(u))&&(C=F),C>=0){var M=C===i.tabbableGroups.length-1?0:C+1,I=i.tabbableGroups[M];N=ne(u)>=0?I.firstTabbableNode:I.firstDomTabbableNode}else ve(g)||(N=m.nextTabbableNode(u))}}else N=h("fallbackFocus");return N},O=function(d){var u=Se(d);if(!(c(u,d)>=0)){if(fe(r.clickOutsideDeactivates,d)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}fe(r.allowOutsideClick,d)||d.preventDefault()}},R=function(d){var u=Se(d),g=c(u,d)>=0;if(g||u instanceof Document)g&&(i.mostRecentlyFocusedNode=u);else{d.stopImmediatePropagation();var _,E=!0;if(i.mostRecentlyFocusedNode)if(ne(i.mostRecentlyFocusedNode)>0){var N=c(i.mostRecentlyFocusedNode),F=i.containerGroups[N].tabbableNodes;if(F.length>0){var m=F.findIndex(function(f){return f===i.mostRecentlyFocusedNode});m>=0&&(r.isKeyForward(i.recentNavEvent)?m+1=0&&(_=F[m-1],E=!1))}}else i.containerGroups.some(function(f){return f.tabbableNodes.some(function(T){return ne(T)>0})})||(E=!1);else E=!1;E&&(_=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(_||i.mostRecentlyFocusedNode||v())}i.recentNavEvent=void 0},K=function(d){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=d;var g=w({event:d,isBackward:u});g&&(ve(d)&&d.preventDefault(),y(g))},G=function(d){(r.isKeyForward(d)||r.isKeyBackward(d))&&K(d,r.isKeyBackward(d))},W=function(d){Ts(d)&&fe(r.escapeDeactivates,d)!==!1&&(d.preventDefault(),o.deactivate())},V=function(d){var u=Se(d);c(u,d)>=0||fe(r.clickOutsideDeactivates,d)||fe(r.allowOutsideClick,d)||(d.preventDefault(),d.stopImmediatePropagation())},$=function(){if(i.active)return lt.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?ct(function(){y(v())}):y(v()),s.addEventListener("focusin",R,!0),s.addEventListener("mousedown",O,{capture:!0,passive:!1}),s.addEventListener("touchstart",O,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",G,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},me=function(){if(i.active)return s.removeEventListener("focusin",R,!0),s.removeEventListener("mousedown",O,!0),s.removeEventListener("touchstart",O,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",G,!0),s.removeEventListener("keydown",W),o},P=function(d){var u=d.some(function(g){var _=Array.from(g.removedNodes);return _.some(function(E){return E===i.mostRecentlyFocusedNode})});u&&y(v())},H=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(P):void 0,J=function(){H&&(H.disconnect(),i.active&&!i.paused&&i.containers.map(function(d){H.observe(d,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(d){if(i.active)return this;var u=l(d,"onActivate"),g=l(d,"onPostActivate"),_=l(d,"checkCanFocusTrap");_||p(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,u==null||u();var E=function(){_&&p(),$(),J(),g==null||g()};return _?(_(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(d){if(!i.active)return this;var u=ot({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},d);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,me(),i.active=!1,i.paused=!1,J(),lt.deactivateTrap(n,o);var g=l(u,"onDeactivate"),_=l(u,"onPostDeactivate"),E=l(u,"checkCanReturnFocus"),N=l(u,"returnFocus","returnFocusOnDeactivate");g==null||g();var F=function(){ct(function(){N&&y(x(i.nodeFocusedBeforeActivation)),_==null||_()})};return N&&E?(E(x(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(d){if(i.paused||!i.active)return this;var u=l(d,"onPause"),g=l(d,"onPostPause");return i.paused=!0,u==null||u(),me(),J(),g==null||g(),this},unpause:function(d){if(!i.paused||!i.active)return this;var u=l(d,"onUnpause"),g=l(d,"onPostUnpause");return i.paused=!1,u==null||u(),p(),$(),J(),g==null||g(),this},updateContainerElements:function(d){var u=[].concat(d).filter(Boolean);return i.containers=u.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&p(),J(),this}},o.updateContainerElements(e),o};function Os(a,e={}){let t;const{immediate:s,...n}=e,r=se(!1),i=se(!1),o=p=>t&&t.activate(p),l=p=>t&&t.deactivate(p),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},v=pe(()=>{const p=Xe(a);return(Array.isArray(p)?p:[p]).map(b=>{const y=Xe(b);return typeof y=="string"?y:Rt(y)}).filter(Ct)});return je(v,p=>{p.length&&(t=Fs(p,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class oe{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{oe.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new oe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,v=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;v();)this.iframes&&this.forEachIframe(t,p=>this.checkIframeFilter(c,h,p,o),p=>{this.createInstanceOnIframe(p).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(p=>{s(p)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let Rs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new oe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return oe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,v=e.value.substr(0,i.start),p=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=v+p,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let v=1;v{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let v=1;vs(l[i],v),(v,p)=>{e.lastIndex=p,n(v)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:v}=this.checkWhitespaceRanges(o,i,r.value);v&&this.wrapRangeInMappedTextNode(r,c,h,p=>t(p,o,r.value.substring(c,h),l),p=>{s(p,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),v=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(p,b)=>this.opt.filter(b,c,s,v),p=>{v++,s++,this.opt.each(p)},()=>{v===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=oe.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Cs(a){const e=new Rs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Te(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(v){i(v)}}function l(h){try{c(s.throw(h))}catch(v){i(v)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const Ms="ENTRIES",xt="KEYS",St="VALUES",z="";class Ae{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=ae(this._path);if(ae(t)===z)return{done:!1,value:this.result()};const s=e.get(ae(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=ae(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>ae(e)).filter(e=>e!==z).join("")}value(){return ae(this._path).node.get(z)}result(){switch(this._type){case St:return this.value();case xt:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const ae=a=>a[a.length-1],As=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===z){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let v=0;vt)continue e}_t(a.get(c),e,t,s,n,h,i,o+c)}};class Z{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Oe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Ke(s);for(const i of n.keys())if(i!==z&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new Z(o,e)}}return new Z(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ls(this._tree,e)}entries(){return new Ae(this,Ms)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return As(this._tree,e,t)}get(e){const t=$e(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=$e(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Ae(this,xt)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,Le(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=Le(this._tree,e);return s.set(z,t(s.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=Le(this._tree,e);let n=s.get(z);return n===void 0&&s.set(z,n=t()),n}values(){return new Ae(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new Z;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return Z.from(Object.entries(e))}}const Oe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==z&&e.startsWith(s))return t.push([a,s]),Oe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Oe(void 0,"",t)},$e=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return $e(a.get(t),e.slice(t.length))},Le=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Oe(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Et(s);else if(t.size===1){const[n,r]=t.entries().next().value;Tt(s,n,r)}}},Et=a=>{if(a.length===0)return;const[e,t]=Ke(a);if(e.delete(t),e.size===0)Et(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==z&&Tt(a.slice(0,-1),s,n)}},Tt=(a,e,t)=>{if(a.length===0)return;const[s,n]=Ke(a);s.set(n+e,t),s.delete(n)},Ke=a=>a[a.length-1],Je="or",It="and",Ds="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Pe:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},ze),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},dt),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},$s),e.autoSuggestOptions||{})}),this._index=new Z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=We,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const v=s(h.toString(),c),p=this._fieldIds[c],b=new Set(v).size;this.addFieldLength(l,p,this._documentCount-1,b);for(const y of v){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(p,l,w);else x&&this.addTerm(p,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(v=>setTimeout(v,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const v=t(h.toString(),c),p=this._fieldIds[c],b=new Set(v).size;this.removeFieldLength(l,p,this._documentCount,b);for(const y of v){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(p,l,w);else x&&this.removeTerm(p,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Z,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=We,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Te(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Be.batchSize,r=e.batchWait||Be.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[v]of h)this._documentIds.has(v)||(h.size<=1?l.delete(c):h.delete(v));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Pe.minDirtCount,s=s||Pe.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:l}]of s){const c=o.length||1,h={id:this._documentIds.get(r),score:i*c,terms:Object.keys(l),queryTerms:o,match:l};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(ft),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(ft),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Te(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(ze.hasOwnProperty(e))return De(ze,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=_e(n),l._fieldLength=_e(r),l._storedFields=_e(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const v=new Map;for(const p of Object.keys(h)){let b=h[p];o===1&&(b=b.ds),v.set(parseInt(p,10),_e(b))}l._index.set(c,v)}return l}static loadJSAsync(e,t){return Te(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ee(n),l._fieldLength=yield Ee(r),l._storedFields=yield Ee(i);for(const[h,v]of l._documentIds)l._idToShortId.set(v,h);let c=0;for(const[h,v]of s){const p=new Map;for(const b of Object.keys(v)){let y=v[b];o===1&&(y=y.ds),p.set(parseInt(b,10),yield Ee(y))}++c%1e3===0&&(yield kt(0)),l._index.set(h,p)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new le(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new Z,c}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const p=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,p));return this.combineResults(b,p.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,v=o(e).flatMap(p=>l(p)).filter(p=>!!p).map(Vs(i)).map(p=>this.executeQuerySpec(p,i));return this.combineResults(v,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:De(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},dt.weights),i),v=this._index.get(e.term),p=this.termResults(e.term,e.term,1,e.termBoost,v,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const O=x.length-e.term.length;if(!O)continue;y==null||y.delete(x);const R=h*x.length/(x.length+.3*O);this.termResults(e.term,x,R,e.termBoost,w,n,r,l,p)}if(y)for(const x of y.keys()){const[w,O]=y.get(x);if(!O)continue;const R=c*x.length/(x.length+O);this.termResults(e.term,x,R,e.termBoost,w,n,r,l,p)}return p}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Je){if(e.length===0)return new Map;const s=t.toLowerCase(),n=zs[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const v=i[h],p=this._fieldIds[h],b=r.get(p);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[p];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(p,w,t),y-=1;continue}const O=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!O)continue;const R=b.get(w),K=this._fieldLength.get(w)[p],G=js(R,y,this._documentCount,K,x,l),W=s*n*v*O*G,V=c.get(w);if(V){V.score+=W,Bs(V.terms,e);const $=De(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,pt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,pt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,zs={[Je]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ht(s.terms,r)}}return a},[It]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ht(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Ds]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ps={k:1.2,b:.7,d:.5},js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Vs=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},ze={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ws),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},dt={combineWith:Je,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ps},$s={combineWith:It,prefix:(a,e,t)=>e===t.length-1},Be={batchSize:1e3,batchWait:10},We={minDirtFactor:.1,minDirtCount:20},Pe=Object.assign(Object.assign({},Be),We),Bs=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},ft=({score:a},{score:e})=>e-a,pt=()=>new Map,_e=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ee=a=>Te(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield kt(0));return e}),kt=a=>new Promise(e=>setTimeout(e,a)),Ws=/[\n\r\p{Z}\p{P}]+/u;class Ks{constructor(e=10){Re(this,"max");Re(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Js=["aria-owns"],Us={class:"shell"},qs=["title"],Gs={class:"search-actions before"},Hs=["title"],Qs=["placeholder"],Ys={class:"search-actions"},Zs=["title"],Xs=["disabled","title"],en=["id","role","aria-labelledby"],tn=["aria-selected"],sn=["href","aria-label","onMouseenter","onFocusin"],nn={class:"titles"},rn=["innerHTML"],an={class:"title main"},on=["innerHTML"],ln={key:0,class:"excerpt-wrapper"},cn={key:0,class:"excerpt",inert:""},un=["innerHTML"],dn={key:0,class:"no-results"},hn={class:"search-keyboard-shortcuts"},fn=["aria-label"],pn=["aria-label"],vn=["aria-label"],mn=["aria-label"],gn=At({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var N,F;const t=e,s=ye(),n=ye(),r=ye(ns),i=ts(),{activate:o}=Os(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=et(async()=>{var m,f,T,A,C,M,I,L,j;return it(le.loadJSON((T=await((f=(m=r.value)[l.value])==null?void 0:f.call(m)))==null?void 0:T.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((A=c.value.search)==null?void 0:A.provider)==="local"&&((M=(C=c.value.search.options)==null?void 0:C.miniSearch)==null?void 0:M.searchOptions)},...((I=c.value.search)==null?void 0:I.provider)==="local"&&((j=(L=c.value.search.options)==null?void 0:L.miniSearch)==null?void 0:j.options)}))}),p=pe(()=>{var m,f;return((m=c.value.search)==null?void 0:m.provider)==="local"&&((f=c.value.search.options)==null?void 0:f.disableQueryPersistence)===!0}).value?se(""):Lt("vitepress:local-search-filter",""),b=Dt("vitepress:local-search-detailed-list",((N=c.value.search)==null?void 0:N.provider)==="local"&&((F=c.value.search.options)==null?void 0:F.detailedView)===!0),y=pe(()=>{var m,f,T;return((m=c.value.search)==null?void 0:m.provider)==="local"&&(((f=c.value.search.options)==null?void 0:f.disableDetailedView)===!0||((T=c.value.search.options)==null?void 0:T.detailedView)===!1)}),x=pe(()=>{var f,T,A,C,M,I,L;const m=((f=c.value.search)==null?void 0:f.options)??c.value.algolia;return((M=(C=(A=(T=m==null?void 0:m.locales)==null?void 0:T[l.value])==null?void 0:A.translations)==null?void 0:C.button)==null?void 0:M.buttonText)||((L=(I=m==null?void 0:m.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});zt(()=>{y.value&&(b.value=!1)});const w=ye([]),O=se(!1);je(p,()=>{O.value=!1});const R=et(async()=>{if(n.value)return it(new Cs(n.value))},null),K=new Ks(16);Pt(()=>[h.value,p.value,b.value],async([m,f,T],A,C)=>{var ge,Ue,qe,Ge;(A==null?void 0:A[0])!==m&&K.clear();let M=!1;if(C(()=>{M=!0}),!m)return;w.value=m.search(f).slice(0,16),O.value=!0;const I=T?await Promise.all(w.value.map(B=>G(B.id))):[];if(M)return;for(const{id:B,mod:X}of I){const ee=B.slice(0,B.indexOf("#"));let Q=K.get(ee);if(Q)continue;Q=new Map,K.set(ee,Q);const U=X.default??X;if(U!=null&&U.render||U!=null&&U.setup){const te=Qt(U);te.config.warnHandler=()=>{},te.provide(Yt,i),Object.defineProperties(te.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const He=document.createElement("div");te.mount(He),He.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ce=>{var Ze;const be=(Ze=ce.querySelector("a"))==null?void 0:Ze.getAttribute("href"),Qe=(be==null?void 0:be.startsWith("#"))&&be.slice(1);if(!Qe)return;let Ye="";for(;(ce=ce.nextElementSibling)&&!/^h[1-6]$/i.test(ce.tagName);)Ye+=ce.outerHTML;Q.set(Qe,Ye)}),te.unmount()}if(M)return}const L=new Set;if(w.value=w.value.map(B=>{const[X,ee]=B.id.split("#"),Q=K.get(X),U=(Q==null?void 0:Q.get(ee))??"";for(const te in B.match)L.add(te);return{...B,text:U}}),await ue(),M)return;await new Promise(B=>{var X;(X=R.value)==null||X.unmark({done:()=>{var ee;(ee=R.value)==null||ee.markRegExp(E(L),{done:B})}})});const j=((ge=s.value)==null?void 0:ge.querySelectorAll(".result .excerpt"))??[];for(const B of j)(Ue=B.querySelector('mark[data-markjs="true"]'))==null||Ue.scrollIntoView({block:"center"});(Ge=(qe=n.value)==null?void 0:qe.firstElementChild)==null||Ge.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function G(m){const f=Zt(m.slice(0,m.indexOf("#")));try{if(!f)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(f)}}catch(T){return console.error(T),{id:m,mod:{}}}}const W=se(),V=pe(()=>{var m;return((m=p.value)==null?void 0:m.length)<=0});function $(m=!0){var f,T;(f=W.value)==null||f.focus(),m&&((T=W.value)==null||T.select())}Ce(()=>{$()});function me(m){m.pointerType==="mouse"&&$()}const P=se(-1),H=se(!1);je(w,m=>{P.value=m.length?0:-1,J()});function J(){ue(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}we("ArrowUp",m=>{m.preventDefault(),P.value--,P.value<0&&(P.value=w.value.length-1),H.value=!0,J()}),we("ArrowDown",m=>{m.preventDefault(),P.value++,P.value>=w.value.length&&(P.value=0),H.value=!0,J()});const k=jt();we("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const f=w.value[P.value];if(m.target instanceof HTMLInputElement&&!f){m.preventDefault();return}f&&(k.go(f.id),t("close"))}),we("Escape",()=>{t("close")});const u=ss({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Ce(()=>{window.history.pushState(null,"",null)}),Vt("popstate",m=>{m.preventDefault(),t("close")});const g=$t(Bt?document.body:null);Ce(()=>{ue(()=>{g.value=!0,ue().then(()=>o())})}),Wt(()=>{g.value=!1});function _(){p.value="",ue().then(()=>$(!1))}function E(m){return new RegExp([...m].sort((f,T)=>T.length-f.length).map(f=>`(${Xt(f)})`).join("|"),"gi")}return(m,f)=>{var T,A,C,M;return q(),Kt(Ht,{to:"body"},[S("div",{ref_key:"el",ref:s,role:"button","aria-owns":(T=w.value)!=null&&T.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[S("div",{class:"backdrop",onClick:f[0]||(f[0]=I=>m.$emit("close"))}),S("div",Us,[S("form",{class:"search-bar",onPointerup:f[4]||(f[4]=I=>me(I)),onSubmit:f[5]||(f[5]=Jt(()=>{},["prevent"]))},[S("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},f[8]||(f[8]=[S("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,qs),S("div",Gs,[S("button",{class:"back-button",title:D(u)("modal.backButtonTitle"),onClick:f[1]||(f[1]=I=>m.$emit("close"))},f[9]||(f[9]=[S("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,Hs)]),Ut(S("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":f[2]||(f[2]=I=>Gt(p)?p.value=I:null),placeholder:x.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,Qs),[[qt,D(p)]]),S("div",Ys,[y.value?xe("",!0):(q(),Y("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(u)("modal.displayDetails"),onClick:f[3]||(f[3]=I=>P.value>-1&&(b.value=!D(b)))},f[10]||(f[10]=[S("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,Zs)),S("button",{class:"clear-button",type:"reset",disabled:V.value,title:D(u)("modal.resetButtonTitle"),onClick:_},f[11]||(f[11]=[S("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,Xs)])],32),S("ul",{ref_key:"resultsEl",ref:n,id:(A=w.value)!=null&&A.length?"localsearch-list":void 0,role:(C=w.value)!=null&&C.length?"listbox":void 0,"aria-labelledby":(M=w.value)!=null&&M.length?"localsearch-label":void 0,class:"results",onMousemove:f[7]||(f[7]=I=>H.value=!1)},[(q(!0),Y(nt,null,st(w.value,(I,L)=>(q(),Y("li",{key:I.id,role:"option","aria-selected":P.value===L?"true":"false"},[S("a",{href:I.id,class:tt(["result",{selected:P.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:j=>!H.value&&(P.value=L),onFocusin:j=>P.value=L,onClick:f[6]||(f[6]=j=>m.$emit("close"))},[S("div",null,[S("div",nn,[f[13]||(f[13]=S("span",{class:"title-icon"},"#",-1)),(q(!0),Y(nt,null,st(I.titles,(j,ge)=>(q(),Y("span",{key:ge,class:"title"},[S("span",{class:"text",innerHTML:j},null,8,rn),f[12]||(f[12]=S("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),S("span",an,[S("span",{class:"text",innerHTML:I.title},null,8,on)])]),D(b)?(q(),Y("div",ln,[I.text?(q(),Y("div",cn,[S("div",{class:"vp-doc",innerHTML:I.text},null,8,un)])):xe("",!0),f[14]||(f[14]=S("div",{class:"excerpt-gradient-bottom"},null,-1)),f[15]||(f[15]=S("div",{class:"excerpt-gradient-top"},null,-1))])):xe("",!0)])],42,sn)],8,tn))),128)),D(p)&&!w.value.length&&O.value?(q(),Y("li",dn,[de(he(D(u)("modal.noResultsText"))+' "',1),S("strong",null,he(D(p)),1),f[16]||(f[16]=de('" '))])):xe("",!0)],40,en),S("div",hn,[S("span",null,[S("kbd",{"aria-label":D(u)("modal.footer.navigateUpKeyAriaLabel")},f[17]||(f[17]=[S("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,fn),S("kbd",{"aria-label":D(u)("modal.footer.navigateDownKeyAriaLabel")},f[18]||(f[18]=[S("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,pn),de(" "+he(D(u)("modal.footer.navigateText")),1)]),S("span",null,[S("kbd",{"aria-label":D(u)("modal.footer.selectKeyAriaLabel")},f[19]||(f[19]=[S("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,vn),de(" "+he(D(u)("modal.footer.selectText")),1)]),S("span",null,[S("kbd",{"aria-label":D(u)("modal.footer.closeKeyAriaLabel")},"esc",8,mn),de(" "+he(D(u)("modal.footer.closeText")),1)])])])],8,Js)])}}}),_n=es(gn,[["__scopeId","data-v-e311804d"]]);export{_n as default}; diff --git a/assets/chunks/framework.BnE-uSbk.js b/assets/chunks/framework.BnE-uSbk.js new file mode 100644 index 0000000..8f6b69a --- /dev/null +++ b/assets/chunks/framework.BnE-uSbk.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Hs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Ct=[],Ue=()=>{},zo=()=>!1,Zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$s=e=>e.startsWith("onUpdate:"),fe=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Qo=Object.prototype.hasOwnProperty,z=(e,t)=>Qo.call(e,t),K=Array.isArray,At=e=>Fn(e)==="[object Map]",ui=e=>Fn(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",st=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",di=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),hi=Object.prototype.toString,Fn=e=>hi.call(e),Zo=e=>Fn(e).slice(8,-1),pi=e=>Fn(e)==="[object Object]",js=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rt=Hs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Hn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},el=/-(\w)/g,Ie=Hn(e=>e.replace(el,(t,n)=>n?n.toUpperCase():"")),tl=/\B([A-Z])/g,rt=Hn(e=>e.replace(tl,"-$1").toLowerCase()),$n=Hn(e=>e.charAt(0).toUpperCase()+e.slice(1)),wn=Hn(e=>e?`on${$n(e)}`:""),tt=(e,t)=>!Object.is(e,t),Sn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ws=e=>{const t=parseFloat(e);return isNaN(t)?e:t},nl=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let hr;const mi=()=>hr||(hr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vs(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(rl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Us(e){let t="";if(re(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),al=e=>re(e)?e:e==null?"":K(e)||ne(e)&&(e.toString===hi||!q(e.toString))?vi(e)?al(e.value):JSON.stringify(e,bi,2):String(e),bi=(e,t)=>vi(t)?bi(e,t.value):At(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Zn(s,i)+" =>"]=r,n),{})}:ui(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:st(t)?Zn(t):ne(t)&&!K(t)&&!pi(t)?String(t):t,Zn=(e,t="")=>{var n;return st(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let _e;class fl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;xt;){let t=xt,n;for(;t;)t.flags&1||(t.flags&=-9),t=t.next;for(t=xt,xt=void 0;t;){if(n=t.next,t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function xi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ti(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ws(s),dl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ss(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ci(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ci(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Wt))return;e.globalVersion=Wt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ss(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{xi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,Ti(e),e.flags&=-3}}function Ws(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s),!n.subs&&n.computed){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ws(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const Ai=[];function it(){Ai.push(Ne),Ne=!1}function ot(){const e=Ai.pop();Ne=e===void 0?!0:e}function pr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Wt=0;class hl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Dn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new hl(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,Ri(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Wt++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{ks()}}}function Ri(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ri(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Rn=new WeakMap,ht=Symbol(""),Es=Symbol(""),Kt=Symbol("");function ve(e,t,n){if(Ne&&te){let s=Rn.get(e);s||Rn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Dn),r.target=e,r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Rn.get(e);if(!o){Wt++;return}const l=c=>{c&&c.trigger()};if(Bs(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&js(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,g)=>{(g==="length"||g===Kt||!st(g)&&g>=a)&&l(h)})}else switch(n!==void 0&&l(o.get(n)),f&&l(o.get(Kt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(ht)),At(e)&&l(o.get(Es)));break;case"delete":c||(l(o.get(ht)),At(e)&&l(o.get(Es)));break;case"set":At(e)&&l(o.get(ht));break}}ks()}function pl(e,t){const n=Rn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(ve(t,"iterate",Kt),Pe(e)?t:t.map(me))}function jn(e){return ve(e=J(e),"iterate",Kt),e}const gl={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,me)},concat(...e){return _t(this).concat(...e.map(t=>K(t)?_t(t):t))},entries(){return ts(this,"entries",e=>(e[1]=me(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(me),arguments)},find(e,t){return We(this,"find",e,t,me,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,me,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ht(this,"pop")},push(...e){return Ht(this,"push",e)},reduce(e,...t){return gr(this,"reduce",e,t)},reduceRight(e,...t){return gr(this,"reduceRight",e,t)},shift(){return Ht(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ht(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ht(this,"unshift",e)},values(){return ts(this,"values",me)}};function ts(e,t,n){const s=jn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ml=Array.prototype;function We(e,t,n,s,r,i){const o=jn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==ml[t]){const h=c.apply(e,i);return l?me(h):h}let f=n;o!==e&&(l?f=function(h,g){return n.call(this,me(h),g,e)}:n.length>2&&(f=function(h,g){return n.call(this,h,g,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function gr(e,t,n,s){const r=jn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,me(l),c,e)}),r[t](i,...s)}function ns(e,t,n){const s=J(e);ve(s,"iterate",Kt);const r=s[t](...n);return(r===-1||r===!1)&&Ys(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ht(e,t,n=[]){it(),Bs();const s=J(e)[t].apply(e,n);return ks(),ot(),s}const yl=Hs("__proto__,__v_isRef,__isVue"),Oi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(st));function vl(e){st(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class Mi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Pl:Ni:i?Li:Ii).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){let c;if(o&&(c=gl[n]))return c;if(n==="hasOwnProperty")return vl}const l=Reflect.get(t,n,ae(t)?t:s);return(st(n)?Oi.has(n):yl(n))||(r||ve(t,"get",n),i)?l:ae(l)?o&&js(n)?l:l.value:ne(l)?r?Bn(l):Un(l):l}}class Pi extends Mi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=vt(i);if(!Pe(s)&&!vt(s)&&(i=J(i),s=J(s)),!K(t)&&ae(i)&&!ae(s))return c?!1:(i.value=s,!0)}const o=K(t)&&js(n)?Number(n)e,Vn=e=>Reflect.getPrototypeOf(e);function cn(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(tt(t,i)&&ve(r,"get",t),ve(r,"get",i));const{has:o}=Vn(r),l=s?Ks:n?Xs:me;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function an(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(tt(e,r)&&ve(s,"has",e),ve(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function fn(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",ht),Reflect.get(e,"size",e)}function mr(e,t=!1){!t&&!Pe(e)&&!vt(e)&&(e=J(e));const n=J(this);return Vn(n).has.call(n,e)||(n.add(e),Ge(n,"add",e,e)),this}function yr(e,t,n=!1){!n&&!Pe(t)&&!vt(t)&&(t=J(t));const s=J(this),{has:r,get:i}=Vn(s);let o=r.call(s,e);o||(e=J(e),o=r.call(s,e));const l=i.call(s,e);return s.set(e,t),o?tt(t,l)&&Ge(s,"set",e,t):Ge(s,"add",e,t),this}function vr(e){const t=J(this),{has:n,get:s}=Vn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&Ge(t,"delete",e,void 0),i}function br(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ge(e,"clear",void 0,void 0),n}function un(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Ks:e?Xs:me;return!e&&ve(l,"iterate",ht),o.forEach((f,a)=>s.call(r,c(f),c(a),i))}}function dn(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=At(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?Ks:t?Xs:me;return!t&&ve(i,"iterate",c?Es:ht),{next(){const{value:h,done:g}=f.next();return g?{value:h,done:g}:{value:l?[a(h[0]),a(h[1])]:a(h),done:g}},[Symbol.iterator](){return this}}}}function Xe(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function El(){const e={get(i){return cn(this,i)},get size(){return fn(this)},has:an,add:mr,set:yr,delete:vr,clear:br,forEach:un(!1,!1)},t={get(i){return cn(this,i,!1,!0)},get size(){return fn(this)},has:an,add(i){return mr.call(this,i,!0)},set(i,o){return yr.call(this,i,o,!0)},delete:vr,clear:br,forEach:un(!1,!0)},n={get(i){return cn(this,i,!0)},get size(){return fn(this,!0)},has(i){return an.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:un(!0,!1)},s={get(i){return cn(this,i,!0,!0)},get size(){return fn(this,!0)},has(i){return an.call(this,i,!0)},add:Xe("add"),set:Xe("set"),delete:Xe("delete"),clear:Xe("clear"),forEach:un(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=dn(i,!1,!1),n[i]=dn(i,!0,!1),t[i]=dn(i,!1,!0),s[i]=dn(i,!0,!0)}),[e,n,t,s]}const[xl,Tl,Cl,Al]=El();function qs(e,t){const n=t?e?Al:Cl:e?Tl:xl;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Rl={get:qs(!1,!1)},Ol={get:qs(!1,!0)},Ml={get:qs(!0,!1)};const Ii=new WeakMap,Li=new WeakMap,Ni=new WeakMap,Pl=new WeakMap;function Il(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ll(e){return e.__v_skip||!Object.isExtensible(e)?0:Il(Zo(e))}function Un(e){return vt(e)?e:Gs(e,!1,_l,Rl,Ii)}function Nl(e){return Gs(e,!1,Sl,Ol,Li)}function Bn(e){return Gs(e,!0,wl,Ml,Ni)}function Gs(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Ll(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function pt(e){return vt(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ys(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function En(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&gi(e,"__v_skip",!0),e}const me=e=>ne(e)?Un(e):e,Xs=e=>ne(e)?Bn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Fi(e,!1)}function Js(e){return Fi(e,!0)}function Fi(e,t){return ae(e)?e:new Fl(e,t)}class Fl{constructor(t,n){this.dep=new Dn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:me(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||vt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:me(t),this.dep.trigger())}}function Hi(e){return ae(e)?e.value:e}const Hl={get:(e,t,n)=>t==="__v_raw"?e:Hi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function $i(e){return pt(e)?e:new Proxy(e,Hl)}class $l{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Dn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Dl(e){return new $l(e)}class jl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pl(J(this._object),this._key)}}class Vl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ul(e,t,n){return ae(e)?e:q(e)?new Vl(e):ne(e)&&arguments.length>1?Bl(e,t,n):oe(e)}function Bl(e,t,n){const s=e[t];return ae(s)?s:new jl(e,t,n)}class kl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Dn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Wt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return Ei(this),!0}get value(){const t=this.dep.track();return Ci(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Wl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new kl(s,r,n)}const hn={},On=new WeakMap;let ut;function Kl(e,t=!1,n=ut){if(n){let s=On.get(n);s||On.set(n,s=[]),s.push(e)}}function ql(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=m=>r?m:Pe(m)||r===!1||r===0?qe(m,1):qe(m);let a,h,g,v,_=!1,S=!1;if(ae(e)?(h=()=>e.value,_=Pe(e)):pt(e)?(h=()=>f(e),_=!0):K(e)?(S=!0,_=e.some(m=>pt(m)||Pe(m)),h=()=>e.map(m=>{if(ae(m))return m.value;if(pt(m))return f(m);if(q(m))return c?c(m,2):m()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(g){it();try{g()}finally{ot()}}const m=ut;ut=a;try{return c?c(e,3,[v]):e(v)}finally{ut=m}}:h=Ue,t&&r){const m=h,M=r===!0?1/0:r;h=()=>qe(m(),M)}const U=_i(),N=()=>{a.stop(),U&&Ds(U.effects,a)};if(i&&t){const m=t;t=(...M)=>{m(...M),N()}}let B=S?new Array(e.length).fill(hn):hn;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const M=a.run();if(r||_||(S?M.some((F,$)=>tt(F,B[$])):tt(M,B))){g&&g();const F=ut;ut=a;try{const $=[M,B===hn?void 0:S&&B[0]===hn?[]:B,v];c?c(t,3,$):t(...$),B=M}finally{ut=F}}}else a.run()};return l&&l(p),a=new wi(h),a.scheduler=o?()=>o(p,!1):p,v=m=>Kl(m,!1,a),g=a.onStop=()=>{const m=On.get(a);if(m){if(c)c(m,4);else for(const M of m)M();On.delete(a)}},t?s?p(!0):B=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function qe(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))qe(e.value,t,n);else if(K(e))for(let s=0;s{qe(s,t,n)});else if(pi(e)){for(const s in e)qe(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&qe(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function en(e,t,n,s){try{return s?e(...s):e()}catch(r){tn(r,t,n)}}function Fe(e,t,n,s){if(q(e)){const r=en(e,t,n,s);return r&&di(r)&&r.catch(i=>{tn(i,t,n)}),r}if(K(e)){const r=[];for(let i=0;i>>1,r=we[s],i=Gt(r);i=Gt(n)?we.push(e):we.splice(Yl(t),0,e),e.flags|=1,ji()}}function ji(){!qt&&!xs&&(xs=!0,zs=Di.then(Vi))}function Xl(e){K(e)?Ot.push(...e):Qe&&e.id===-1?Qe.splice(St+1,0,e):e.flags&1||(Ot.push(e),e.flags|=1),ji()}function _r(e,t,n=qt?je+1:0){for(;nGt(n)-Gt(s));if(Ot.length=0,Qe){Qe.push(...t);return}for(Qe=t,St=0;Ste.id==null?e.flags&2?-1:1/0:e.id;function Vi(e){xs=!1,qt=!0;try{for(je=0;je{s._d&&Nr(-1);const i=Pn(t);let o;try{o=e(...r)}finally{Pn(i),s._d&&Nr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function If(e,t){if(de===null)return e;const n=Xn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,jt=e=>e&&(e.disabled||e.disabled===""),zl=e=>e&&(e.defer||e.defer===""),wr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Sr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ts=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Ql={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:g,o:{insert:v,querySelector:_,createText:S,createComment:U}}=f,N=jt(t.props);let{shapeFlag:B,children:p,dynamicChildren:m}=t;if(e==null){const M=t.el=S(""),F=t.anchor=S("");v(M,n,s),v(F,n,s);const $=(R,b)=>{B&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},j=()=>{const R=t.target=Ts(t.props,_),b=Wi(R,t,S,v);R&&(o!=="svg"&&wr(R)?o="svg":o!=="mathml"&&Sr(R)&&(o="mathml"),N||($(R,b),xn(t)))};N&&($(n,F),xn(t)),zl(t.props)?Ee(j,i):j()}else{t.el=e.el,t.targetStart=e.targetStart;const M=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,j=jt(e.props),R=j?n:F,b=j?M:$;if(o==="svg"||wr(F)?o="svg":(o==="mathml"||Sr(F))&&(o="mathml"),m?(g(e.dynamicChildren,m,R,r,i,o,l),sr(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):pn(t,n,M,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const L=t.target=Ts(t.props,_);L&&pn(t,L,null,f,0)}else j&&pn(t,F,$,f,1);xn(t)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:g}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!jt(g);for(let _=0;_{e.isMounted=!0}),zi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Ki={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},qi=e=>{const t=e.subTree;return t.component?qi(t.component):t},tc={name:"BaseTransition",props:Ki,setup(e,{slots:t}){const n=Yn(),s=ec();return()=>{const r=t.default&&Xi(t.default(),!0);if(!r||!r.length)return;const i=Gi(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ss(i);const c=Er(i);if(!c)return ss(i);let f=Cs(c,o,s,n,g=>f=g);c.type!==ye&&Yt(c,f);const a=n.subTree,h=a&&Er(a);if(h&&h.type!==ye&&!dt(c,h)&&qi(n).type!==ye){const g=Cs(h,o,s,n);if(Yt(h,g),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,g.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete g.afterLeave},ss(i);l==="in-out"&&c.type!==ye&&(g.delayLeave=(v,_,S)=>{const U=Yi(s,h);U[String(h.key)]=h,v[Ze]=()=>{_(),v[Ze]=void 0,delete f.delayedLeave},f.delayedLeave=S})}return i}}};function Gi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const nc=tc;function Yi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Cs(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:g,onLeave:v,onAfterLeave:_,onLeaveCancelled:S,onBeforeAppear:U,onAppear:N,onAfterAppear:B,onAppearCancelled:p}=t,m=String(e.key),M=Yi(n,e),F=(R,b)=>{R&&Fe(R,s,9,b)},$=(R,b)=>{const L=b[1];F(R,b),K(R)?R.every(x=>x.length<=1)&&L():R.length<=1&&L()},j={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=U||c;else return;R[Ze]&&R[Ze](!0);const L=M[m];L&&dt(e,L)&&L.el[Ze]&&L.el[Ze](),F(b,[R])},enter(R){let b=f,L=a,x=h;if(!n.isMounted)if(i)b=N||f,L=B||a,x=p||h;else return;let W=!1;const se=R[gn]=ce=>{W||(W=!0,ce?F(x,[R]):F(L,[R]),j.delayedLeave&&j.delayedLeave(),R[gn]=void 0)};b?$(b,[R,se]):se()},leave(R,b){const L=String(e.key);if(R[gn]&&R[gn](!0),n.isUnmounting)return b();F(g,[R]);let x=!1;const W=R[Ze]=se=>{x||(x=!0,b(),se?F(S,[R]):F(_,[R]),R[Ze]=void 0,M[L]===e&&delete M[L])};M[L]=e,v?$(v,[R,W]):W()},clone(R){const b=Cs(R,t,n,s,r);return r&&r(b),b}};return j}function ss(e){if(nn(e))return e=nt(e),e.children=null,e}function Er(e){if(!nn(e))return ki(e.type)&&e.children?Gi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Xi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iIn(_,t&&(K(t)?t[S]:t),n,s,r));return}if(gt(s)&&!r)return;const i=s.shapeFlag&4?Xn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,g=J(h),v=h===Z?()=>!1:_=>z(g,_);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):ae(f)&&(f.value=null)),q(c))en(c,l,12,[o,a]);else{const _=re(c),S=ae(c);if(_||S){const U=()=>{if(e.f){const N=_?v(c)?h[c]:a[c]:c.value;r?K(N)&&Ds(N,i):K(N)?N.includes(i)||N.push(i):_?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else _?(a[c]=o,v(c)&&(h[c]=o)):S&&(c.value=o,e.k&&(a[e.k]=o))};o?(U.id=-1,Ee(U,n)):U()}}}let xr=!1;const wt=()=>{xr||(console.error("Hydration completed but contains mismatches."),xr=!0)},sc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",rc=e=>e.namespaceURI.includes("MathML"),mn=e=>{if(e.nodeType===1){if(sc(e))return"svg";if(rc(e))return"mathml"}},Tt=e=>e.nodeType===8;function ic(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,m)=>{if(!m.hasChildNodes()){n(null,p,m),Mn(),m._vnode=p;return}h(m.firstChild,p,null,null,null),Mn(),m._vnode=p},h=(p,m,M,F,$,j=!1)=>{j=j||!!m.dynamicChildren;const R=Tt(p)&&p.data==="[",b=()=>S(p,m,M,F,$,R),{type:L,ref:x,shapeFlag:W,patchFlag:se}=m;let ce=p.nodeType;m.el=p,se===-2&&(j=!1,m.dynamicChildren=null);let V=null;switch(L){case mt:ce!==3?m.children===""?(c(m.el=r(""),o(p),p),V=p):V=b():(p.data!==m.children&&(wt(),p.data=m.children),V=i(p));break;case ye:B(p)?(V=i(p),N(m.el=p.content.firstChild,p,M)):ce!==8||R?V=b():V=i(p);break;case Ut:if(R&&(p=i(p),ce=p.nodeType),ce===1||ce===3){V=p;const Y=!m.children.length;for(let D=0;D{j=j||!!m.dynamicChildren;const{type:R,props:b,patchFlag:L,shapeFlag:x,dirs:W,transition:se}=m,ce=R==="input"||R==="option";if(ce||L!==-1){W&&Ve(m,null,M,"created");let V=!1;if(B(p)){V=go(F,se)&&M&&M.vnode.props&&M.vnode.props.appear;const D=p.content.firstChild;V&&se.beforeEnter(D),N(D,p,M),m.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,m,p,M,F,$,j);for(;D;){yn(p,1)||wt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=m.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(yn(p,0)||wt(),p.textContent=m.children)}if(b){if(ce||!j||L&48){const D=p.tagName.includes("-");for(const he in b)(ce&&(he.endsWith("value")||he==="indeterminate")||Zt(he)&&!Rt(he)||he[0]==="."||D)&&s(p,he,null,b[he],void 0,M)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,M);else if(L&4&&pt(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,M,m),W&&Ve(m,null,M,"beforeMount"),((Y=b&&b.onVnodeMounted)||W||V)&&_o(()=>{Y&&Oe(Y,M,m),V&&se.enter(p),W&&Ve(m,null,M,"mounted")},F)}return p.nextSibling},v=(p,m,M,F,$,j,R)=>{R=R||!!m.dynamicChildren;const b=m.children,L=b.length;for(let x=0;x{const{slotScopeIds:R}=m;R&&($=$?$.concat(R):R);const b=o(p),L=v(i(p),m,b,M,F,$,j);return L&&Tt(L)&&L.data==="]"?i(m.anchor=L):(wt(),c(m.anchor=f("]"),b,L),L)},S=(p,m,M,F,$,j)=>{if(yn(p.parentElement,1)||wt(),m.el=null,j){const L=U(p);for(;;){const x=i(p);if(x&&x!==L)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,m,b,R,M,F,mn(b),$),R},U=(p,m="[",M="]")=>{let F=0;for(;p;)if(p=i(p),p&&Tt(p)&&(p.data===m&&F++,p.data===M)){if(F===0)return i(p);F--}return p},N=(p,m,M)=>{const F=m.parentNode;F&&F.replaceChild(p,m);let $=M;for(;$;)$.vnode.el===m&&($.vnode.el=$.subTree.el=p),$=$.parent},B=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const Tr="data-allow-mismatch",oc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function yn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Tr);)e=e.parentElement;const n=e&&e.getAttribute(Tr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(oc[t])}}function lc(e,t){if(Tt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(Tt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const gt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Nf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const g=()=>(h++,f=null,v()),v=()=>{let _;return f||(_=f=t().catch(S=>{if(S=S instanceof Error?S:new Error(String(S)),c)return new Promise((U,N)=>{c(S,()=>U(g()),()=>N(S),h+1)});throw S}).then(S=>_!==f&&f?f:(S&&(S.__esModule||S[Symbol.toStringTag]==="Module")&&(S=S.default),a=S,S)))};return Zs({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(_,S,U){const N=i?()=>{const B=i(U,p=>lc(_,p));B&&(S.bum||(S.bum=[])).push(B)}:U;a?N():v().then(()=>!S.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const _=ue;if(er(_),a)return()=>rs(a,_);const S=p=>{f=null,tn(p,_,13,!s)};if(l&&_.suspense||rn)return v().then(p=>()=>rs(p,_)).catch(p=>(S(p),()=>s?le(s,{error:p}):null));const U=oe(!1),N=oe(),B=oe(!!r);return r&&setTimeout(()=>{B.value=!1},r),o!=null&&setTimeout(()=>{if(!U.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);S(p),N.value=p}},o),v().then(()=>{U.value=!0,_.parent&&nn(_.parent.vnode)&&_.parent.update()}).catch(p=>{S(p),N.value=p}),()=>{if(U.value&&a)return rs(a,_);if(N.value&&s)return le(s,{error:N.value});if(n&&!B.value)return le(n)}}})}function rs(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=le(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const nn=e=>e.type.__isKeepAlive;function cc(e,t){Ji(e,"a",t)}function ac(e,t){Ji(e,"da",t)}function Ji(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Wn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)nn(r.parent.vnode)&&fc(s,t,n,r),r=r.parent}}function fc(e,t,n,s){const r=Wn(t,e,s,!0);Kn(()=>{Ds(s[t],r)},n)}function Wn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{it();const l=sn(n),c=Fe(t,n,e,o);return l(),ot(),c});return s?r.unshift(i):r.push(i),i}}const Ye=e=>(t,n=ue)=>{(!rn||e==="sp")&&Wn(e,(...s)=>t(...s),n)},uc=Ye("bm"),Lt=Ye("m"),dc=Ye("bu"),hc=Ye("u"),zi=Ye("bum"),Kn=Ye("um"),pc=Ye("sp"),gc=Ye("rtg"),mc=Ye("rtc");function yc(e,t=ue){Wn("ec",e,t)}const Qi="components";function Ff(e,t){return eo(Qi,e,!0,t)||e}const Zi=Symbol.for("v-ndc");function Hf(e){return re(e)?eo(Qi,e,!1)||e:e||Zi}function eo(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=na(i,!1);if(l&&(l===t||l===Ie(t)||l===$n(Ie(t))))return i}const o=Cr(r[e]||i[e],t)||Cr(r.appContext[e],t);return!o&&s?i:o}}function Cr(e,t){return e&&(e[t]||e[Ie(t)]||e[$n(Ie(t))])}function $f(e,t,n,s){let r;const i=n,o=K(e);if(o||re(e)){const l=o&&pt(e);let c=!1;l&&(c=!Pe(e),e=jn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;cJt(t)?!(t.type===ye||t.type===Se&&!to(t.children)):!0)?e:null}function jf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:wn(s)]=e[s];return n}const As=e=>e?To(e)?Xn(e):As(e.parent):null,Vt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>As(e.parent),$root:e=>As(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>tr(e),$forceUpdate:e=>e.f||(e.f=()=>{Qs(e.update)}),$nextTick:e=>e.n||(e.n=kn.bind(e.proxy)),$watch:e=>jc.bind(e)}),is=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),vc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(is(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Rs&&(o[t]=0)}}const a=Vt[t];let h,g;if(a)return t==="$attrs"&&ve(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,z(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return is(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||is(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Vt,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Vf(){return bc().slots}function bc(){const e=Yn();return e.setupContext||(e.setupContext=Ao(e))}function Ar(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Rs=!0;function _c(e){const t=tr(e),n=e.proxy,s=e.ctx;Rs=!1,t.beforeCreate&&Rr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:g,beforeUpdate:v,updated:_,activated:S,deactivated:U,beforeDestroy:N,beforeUnmount:B,destroyed:p,unmounted:m,render:M,renderTracked:F,renderTriggered:$,errorCaptured:j,serverPrefetch:R,expose:b,inheritAttrs:L,components:x,directives:W,filters:se}=t;if(f&&wc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=Un(Y))}if(Rs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):Ue,on=!q(D)&&q(D.set)?D.set.bind(n):Ue,lt=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(l)for(const Y in l)no(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{Ac(D,Y[D])})}a&&Rr(a,e,"c");function V(Y,D){K(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(V(uc,h),V(Lt,g),V(dc,v),V(hc,_),V(cc,S),V(ac,U),V(yc,j),V(mc,F),V(gc,$),V(zi,B),V(Kn,m),V(pc,R),K(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});M&&e.render===Ue&&(e.render=M),L!=null&&(e.inheritAttrs=L),x&&(e.components=x),W&&(e.directives=W),R&&er(e)}function wc(e,t,n=Ue){K(e)&&(e=Os(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Pt(r.from||s,r.default,!0):i=Pt(r.from||s):i=Pt(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Rr(e,t,n){Fe(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function no(e,t,n,s){let r=s.includes(".")?yo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Be(r,i)}else if(q(e))Be(r,e.bind(n));else if(ne(e))if(K(e))e.forEach(i=>no(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Be(r,i,e)}}function tr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Ln(c,f,o,!0)),Ln(c,t,o)),ne(t)&&i.set(t,c),c}function Ln(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Ln(e,i,n,!0),r&&r.forEach(o=>Ln(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Sc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Sc={data:Or,props:Mr,emits:Mr,methods:Dt,computed:Dt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:Dt,directives:Dt,watch:xc,provide:Or,inject:Ec};function Or(e,t){return t?e?function(){return fe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Ec(e,t){return Dt(Os(e),Os(t))}function Os(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const ro={},io=()=>Object.create(ro),oo=e=>Object.getPrototypeOf(e)===ro;function Rc(e,t,n,s=!1){const r={},i=io();e.propsDefaults=Object.create(null),lo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Nl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Oc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,v]=co(h,t,!0);fe(o,g),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Ct),Ct;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",nr=e=>K(e)?e.map(Me):[Me(e)],Pc=(e,t,n)=>{if(t._n)return t;const s=Jl((...r)=>nr(t(...r)),n);return s._c=!1,s},fo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(ao(r))continue;const i=e[r];if(q(i))t[r]=Pc(r,i,s);else if(i!=null){const o=nr(i);t[r]=()=>o}}},uo=(e,t)=>{const n=nr(t);e.slots.default=()=>n},ho=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Ic=(e,t,n)=>{const s=e.slots=io();if(e.vnode.shapeFlag&32){const r=t._;r?(ho(s,t,n),n&&gi(s,"_",r,!0)):fo(t,s)}else t&&uo(e,t)},Lc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:ho(r,t,n):(i=!t.$stable,fo(t,r)),o=t}else t&&(uo(e,t),o={default:1});if(i)for(const l in r)!ao(l)&&o[l]==null&&delete r[l]},Ee=_o;function Nc(e){return po(e)}function Fc(e){return po(e,ic)}function po(e,t){const n=mi();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:g,setScopeId:v=Ue,insertStaticContent:_}=e,S=(u,d,y,T=null,w=null,E=null,P=void 0,O=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!dt(u,d)&&(T=ln(u),$e(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:I}=d;switch(C){case mt:U(u,d,y,T);break;case ye:N(u,d,y,T);break;case Ut:u==null&&B(d,y,T,P);break;case Se:x(u,d,y,T,w,E,P,O,A);break;default:I&1?M(u,d,y,T,w,E,P,O,A):I&6?W(u,d,y,T,w,E,P,O,A):(I&64||I&128)&&C.process(u,d,y,T,w,E,P,O,A,bt)}k!=null&&w&&In(k,u&&u.ref,E,d||u,!d)},U=(u,d,y,T)=>{if(u==null)s(d.el=l(d.children),y,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,y,T)=>{u==null?s(d.el=c(d.children||""),y,T):d.el=u.el},B=(u,d,y,T)=>{[u.el,u.anchor]=_(u.children,d,y,T,u.el,u.anchor)},p=({el:u,anchor:d},y,T)=>{let w;for(;u&&u!==d;)w=g(u),s(u,y,T),u=w;s(d,y,T)},m=({el:u,anchor:d})=>{let y;for(;u&&u!==d;)y=g(u),r(u),u=y;r(d)},M=(u,d,y,T,w,E,P,O,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,y,T,w,E,P,O,A):R(u,d,w,E,P,O,A)},F=(u,d,y,T,w,E,P,O)=>{let A,C;const{props:k,shapeFlag:I,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),I&8?a(A,u.children):I&16&&j(u.children,A,null,T,w,os(u,E),P,O),G&&Ve(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Rt(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ve(u,null,T,"beforeMount");const X=go(w,H);X&&H.beforeEnter(A),s(A,d,y),((C=k&&k.onVnodeMounted)||X||G)&&Ee(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ve(u,null,T,"mounted")},w)},$=(u,d,y,T,w)=>{if(y&&v(u,y),T)for(let E=0;E{for(let C=A;C{const O=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const I=u.props||Z,H=d.props||Z;let G;if(y&&ct(y,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,y,d,u),k&&Ve(d,u,y,"beforeUpdate"),y&&ct(y,!0),(I.innerHTML&&H.innerHTML==null||I.textContent&&H.textContent==null)&&a(O,""),C?b(u.dynamicChildren,C,O,y,T,os(d,w),E):P||D(u,d,O,null,y,T,os(d,w),E,!1),A>0){if(A&16)L(O,I,H,y,w);else if(A&2&&I.class!==H.class&&i(O,"class",null,H.class,w),A&4&&i(O,"style",I.style,H.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,y,d,u),k&&Ve(d,u,y,"updated")},T)},b=(u,d,y,T,w,E,P)=>{for(let O=0;O{if(d!==y){if(d!==Z)for(const E in d)!Rt(E)&&!(E in y)&&i(u,E,d[E],null,w,T);for(const E in y){if(Rt(E))continue;const P=y[E],O=d[E];P!==O&&E!=="value"&&i(u,E,O,P,w,T)}"value"in y&&i(u,"value",d.value,y.value,w)}},x=(u,d,y,T,w,E,P,O,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:I,dynamicChildren:H,slotScopeIds:G}=d;G&&(O=O?O.concat(G):G),u==null?(s(C,y,T),s(k,y,T),j(d.children||[],y,k,w,E,P,O,A)):I>0&&I&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,y,w,E,P,O),(d.key!=null||w&&d===w.subTree)&&sr(u,d,!0)):D(u,d,y,k,w,E,P,O,A)},W=(u,d,y,T,w,E,P,O,A)=>{d.slotScopeIds=O,u==null?d.shapeFlag&512?w.ctx.activate(d,y,T,P,A):se(d,y,T,w,E,P,A):ce(u,d,A)},se=(u,d,y,T,w,E,P)=>{const O=u.component=Qc(u,T,w);if(nn(u)&&(O.ctx.renderer=bt),Zc(O,!1,P),O.asyncDep){if(w&&w.registerDep(O,V,P),!u.el){const A=O.subTree=le(ye);N(null,A,d,y)}}else V(O,u,d,y,w,E,P)},ce=(u,d,y)=>{const T=d.component=u.component;if(Wc(u,d,y))if(T.asyncDep&&!T.asyncResolved){Y(T,d,y);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},V=(u,d,y,T,w,E,P)=>{const O=()=>{if(u.isMounted){let{next:I,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=mo(u);if(Te){I&&(I.el=ee.el,Y(u,I,P)),Te.asyncDep.then(()=>{u.isUnmounted||O()});return}}let Q=I,xe;ct(u,!1),I?(I.el=ee.el,Y(u,I,P)):I=ee,H&&Sn(H),(xe=I.props&&I.props.onVnodeBeforeUpdate)&&Oe(xe,X,I,ee),ct(u,!0);const pe=ls(u),Le=u.subTree;u.subTree=pe,S(Le,pe,h(Le.el),ln(Le),u,w,E),I.el=pe.el,Q===null&&Kc(u,pe.el),G&&Ee(G,w),(xe=I.props&&I.props.onVnodeUpdated)&&Ee(()=>Oe(xe,X,I,ee),w)}else{let I;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:xe,type:pe}=u,Le=gt(d);if(ct(u,!1),X&&Sn(X),!Le&&(I=G&&G.onVnodeBeforeMount)&&Oe(I,Q,d),ct(u,!0),H&&Qn){const Te=()=>{u.subTree=ls(u),Qn(H,u.subTree,u,w,null)};Le&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{xe.ce&&xe.ce._injectChildStyle(pe);const Te=u.subTree=ls(u);S(null,Te,y,T,u,w,E),d.el=Te.el}if(ee&&Ee(ee,w),!Le&&(I=G&&G.onVnodeMounted)){const Te=d;Ee(()=>Oe(I,Q,Te),w)}(d.shapeFlag&256||Q&>(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&Ee(u.a,w),u.isMounted=!0,d=y=T=null}};u.scope.on();const A=u.effect=new wi(O);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Qs(k),ct(u,!0),C()},Y=(u,d,y)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,Oc(u,d.props,T,y),Lc(u,d.children,y),it(),_r(u),ot()},D=(u,d,y,T,w,E,P,O,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,I=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,I,y,T,w,E,P,O,A);return}else if(H&256){he(C,I,y,T,w,E,P,O,A);return}}G&8?(k&16&&Nt(C,w,E),I!==C&&a(y,I)):k&16?G&16?on(C,I,y,T,w,E,P,O,A):Nt(C,w,E,!0):(k&8&&a(y,""),G&16&&j(I,y,T,w,E,P,O,A))},he=(u,d,y,T,w,E,P,O,A)=>{u=u||Ct,d=d||Ct;const C=u.length,k=d.length,I=Math.min(C,k);let H;for(H=0;Hk?Nt(u,w,E,!0,!1,I):j(d,y,T,w,E,P,O,A,I)},on=(u,d,y,T,w,E,P,O,A)=>{let C=0;const k=d.length;let I=u.length-1,H=k-1;for(;C<=I&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(dt(G,X))S(G,X,y,null,w,E,P,O,A);else break;C++}for(;C<=I&&C<=H;){const G=u[I],X=d[H]=A?et(d[H]):Me(d[H]);if(dt(G,X))S(G,X,y,null,w,E,P,O,A);else break;I--,H--}if(C>I){if(C<=H){const G=H+1,X=GH)for(;C<=I;)$e(u[C],w,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,xe=0;const pe=H-X+1;let Le=!1,Te=0;const Ft=new Array(pe);for(C=0;C=pe){$e(Ce,w,E,!0);continue}let De;if(Ce.key!=null)De=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Ft[Q-X]===0&&dt(Ce,d[Q])){De=Q;break}De===void 0?$e(Ce,w,E,!0):(Ft[De-X]=C+1,De>=Te?Te=De:Le=!0,S(Ce,d[De],y,null,w,E,P,O,A),xe++)}const ur=Le?Hc(Ft):Ct;for(Q=ur.length-1,C=pe-1;C>=0;C--){const Ce=X+C,De=d[Ce],dr=Ce+1{const{el:E,type:P,transition:O,children:A,shapeFlag:C}=u;if(C&6){lt(u.component.subTree,d,y,T);return}if(C&128){u.suspense.move(d,y,T);return}if(C&64){P.move(u,d,y,bt);return}if(P===Se){s(E,d,y);for(let I=0;IO.enter(E),w);else{const{leave:I,delayLeave:H,afterLeave:G}=O,X=()=>s(E,d,y),ee=()=>{I(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,y)},$e=(u,d,y,T=!1,w=!1)=>{const{type:E,props:P,ref:O,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:I,dirs:H,cacheIndex:G}=u;if(I===-2&&(w=!1),O!=null&&In(O,null,y,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!gt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Jo(u.component,y,T);else{if(k&128){u.suspense.unmount(y,T);return}X&&Ve(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,y,bt,T):C&&!C.hasOnce&&(E!==Se||I>0&&I&64)?Nt(C,d,y,!1,!0):(E===Se&&I&384||!w&&k&16)&&Nt(A,d,y),T&&ar(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&Ee(()=>{Q&&Oe(Q,d,u),X&&Ve(u,null,d,"unmounted")},y)},ar=u=>{const{type:d,el:y,anchor:T,transition:w}=u;if(d===Se){Xo(y,T);return}if(d===Ut){m(u);return}const E=()=>{r(y),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:O}=w,A=()=>P(y,E);O?O(u.el,E,A):A()}else E()},Xo=(u,d)=>{let y;for(;u!==d;)y=g(u),r(u),u=y;r(d)},Jo=(u,d,y)=>{const{bum:T,scope:w,job:E,subTree:P,um:O,m:A,a:C}=u;Ir(A),Ir(C),T&&Sn(T),w.stop(),E&&(E.flags|=8,$e(P,u,d,y)),O&&Ee(O,d),Ee(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Nt=(u,d,y,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=g(u.anchor||u.el),y=d&&d[Bi];return y?g(y):d};let Jn=!1;const fr=(u,d,y)=>{u==null?d._vnode&&$e(d._vnode,null,null,!0):S(d._vnode||null,u,d,null,null,null,y),d._vnode=u,Jn||(Jn=!0,_r(),Mn(),Jn=!1)},bt={p:S,um:$e,m:lt,r:ar,mt:se,mc:j,pc:D,pbc:b,n:ln,o:e};let zn,Qn;return t&&([zn,Qn]=t(bt)),{render:fr,hydrate:zn,createApp:Cc(fr,zn)}}function os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function go(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function sr(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function mo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:mo(t)}function Ir(e){if(e)for(let t=0;tPt($c);function rr(e,t){return qn(e,null,t)}function Uf(e,t){return qn(e,null,{flush:"post"})}function Be(e,t,n){return qn(e,t,n)}function qn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=fe({},n);let c;if(rn)if(i==="sync"){const g=Dc();c=g.__watcherHandles||(g.__watcherHandles=[])}else if(!t||s)l.once=!0;else{const g=()=>{};return g.stop=Ue,g.resume=Ue,g.pause=Ue,g}const f=ue;l.call=(g,v,_)=>Fe(g,f,v,_);let a=!1;i==="post"?l.scheduler=g=>{Ee(g,f&&f.suspense)}:i!=="sync"&&(a=!0,l.scheduler=(g,v)=>{v?g():Qs(g)}),l.augmentJob=g=>{t&&(g.flags|=4),a&&(g.flags|=2,f&&(g.id=f.uid,g.i=f))};const h=ql(e,t,l);return c&&c.push(h),h}function jc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?yo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=sn(this),l=qn(r,i.bind(s),n);return o(),l}function yo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ie(t)}Modifiers`]||e[`${rt(t)}Modifiers`];function Uc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Vc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(ws)));let l,c=s[l=wn(t)]||s[l=wn(Ie(t))];!c&&i&&(c=s[l=wn(rt(t))]),c&&Fe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Fe(f,e,6,r)}}function vo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=vo(f,t,!0);a&&(l=!0,fe(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):fe(o,i),ne(e)&&s.set(e,o),o)}function Gn(e,t){return!e||!Zt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,rt(t))||z(e,t))}function ls(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:g,setupState:v,ctx:_,inheritAttrs:S}=e,U=Pn(e);let N,B;try{if(n.shapeFlag&4){const m=r||s,M=m;N=Me(f.call(M,m,a,h,v,g,_)),B=l}else{const m=t;N=Me(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),B=t.props?l:Bc(l)}}catch(m){Bt.length=0,tn(m,e,1),N=le(ye)}let p=N;if(B&&S!==!1){const m=Object.keys(B),{shapeFlag:M}=p;m.length&&M&7&&(i&&m.some($s)&&(B=kc(B,i)),p=nt(p,B,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Pn(U),N}const Bc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Zt(n))&&((t||(t={}))[n]=e[n]);return t},kc=(e,t)=>{const n={};for(const s in e)(!$s(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Wc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Lr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function _o(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):Xl(e)}const Se=Symbol.for("v-fgt"),mt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Ut=Symbol.for("v-stc"),Bt=[];let Ae=null;function Ps(e=!1){Bt.push(Ae=e?null:[])}function qc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Xt=1;function Nr(e){Xt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function wo(e){return e.dynamicChildren=Xt>0?Ae||Ct:null,qc(),Xt>0&&Ae&&Ae.push(e),e}function Bf(e,t,n,s,r,i){return wo(Eo(e,t,n,s,r,i,!0))}function Is(e,t,n,s,r){return wo(le(e,t,n,s,r,!0))}function Jt(e){return e?e.__v_isVNode===!0:!1}function dt(e,t){return e.type===t.type&&e.key===t.key}const So=({key:e})=>e??null,Tn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ae(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function Eo(e,t=null,n=null,s=0,r=null,i=e===Se?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&So(t),ref:t&&Tn(t),scopeId:Ui,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(ir(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Xt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const le=Gc;function Gc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Zi)&&(e=ye),Jt(e)){const l=nt(e,t,!0);return n&&ir(l,n),Xt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(sa(e)&&(e=e.__vccOpts),t){t=Yc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=Us(l)),ne(c)&&(Ys(c)&&!K(c)&&(c=fe({},c)),t.style=Vs(c))}const o=re(e)?1:bo(e)?128:ki(e)?64:ne(e)?4:q(e)?2:0;return Eo(e,t,n,s,r,o,i,!0)}function Yc(e){return e?Ys(e)||oo(e)?fe({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Xc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&So(f),ref:t&&t.ref?n&&i?K(i)?i.concat(Tn(t)):[i,Tn(t)]:Tn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Se?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function xo(e=" ",t=0){return le(mt,null,e,t)}function kf(e,t){const n=le(Ut,null,e);return n.staticCount=t,n}function Wf(e="",t=!1){return t?(Ps(),Is(ye,null,e)):le(ye,null,e)}function Me(e){return e==null||typeof e=="boolean"?le(ye):K(e)?le(Se,null,e.slice()):Jt(e)?et(e):le(mt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function ir(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ir(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!oo(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[xo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xc(...e){const t={};for(let n=0;nue||de;let Nn,Ls;{const e=mi(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ls=t("__VUE_SSR_SETTERS__",n=>rn=n)}const sn=e=>{const t=ue;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Fr=()=>{ue&&ue.scope.off(),Nn(null)};function To(e){return e.vnode.shapeFlag&4}let rn=!1;function Zc(e,t=!1,n=!1){t&&Ls(t);const{props:s,children:r}=e.vnode,i=To(e);Rc(e,s,i,t),Ic(e,r,n);const o=i?ea(e,t):void 0;return t&&Ls(!1),o}function ea(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,vc);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ao(e):null,i=sn(e);it();const o=en(s,e,0,[e.props,r]);if(ot(),i(),di(o)){if(gt(e)||er(e),o.then(Fr,Fr),t)return o.then(l=>{Hr(e,l,t)}).catch(l=>{tn(l,e,0)});e.asyncDep=o}else Hr(e,o,t)}else Co(e,t)}function Hr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=$i(t)),Co(e,n)}let $r;function Co(e,t,n){const s=e.type;if(!e.render){if(!t&&$r&&!s.render){const r=s.template||tr(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=fe(fe({isCustomElement:i,delimiters:l},o),c);s.render=$r(r,f)}}e.render=s.render||Ue}{const r=sn(e);it();try{_c(e)}finally{ot(),r()}}}const ta={get(e,t){return ve(e,"get",""),e[t]}};function Ao(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ta),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy($i(En(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Vt)return Vt[n](e)},has(t,n){return n in t||n in Vt}})):e.proxy}function na(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function sa(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Wl(e,t,rn);function Ns(e,t,n){const s=arguments.length;return s===2?ne(t)&&!K(t)?Jt(t)?le(e,null,[t]):le(e,t):le(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Jt(n)&&(n=[n]),le(e,t,n))}const ra="3.5.10";/** +* @vue/runtime-dom v3.5.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Fs;const Dr=typeof window<"u"&&window.trustedTypes;if(Dr)try{Fs=Dr.createPolicy("vue",{createHTML:e=>e})}catch{}const Ro=Fs?e=>Fs.createHTML(e):e=>e,ia="http://www.w3.org/2000/svg",oa="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,jr=Ke&&Ke.createElement("template"),la={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ke.createElementNS(ia,e):t==="mathml"?Ke.createElementNS(oa,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ke.createTextNode(e),createComment:e=>Ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{jr.innerHTML=Ro(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=jr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Je="transition",$t="animation",zt=Symbol("_vtc"),Oo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ca=fe({},Ki,Oo),aa=e=>(e.displayName="Transition",e.props=ca,e),Kf=aa((e,{slots:t})=>Ns(nc,fa(e),t)),at=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Vr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function fa(e){const t={};for(const x in e)x in Oo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,_=ua(r),S=_&&_[0],U=_&&_[1],{onBeforeEnter:N,onEnter:B,onEnterCancelled:p,onLeave:m,onLeaveCancelled:M,onBeforeAppear:F=N,onAppear:$=B,onAppearCancelled:j=p}=t,R=(x,W,se)=>{ft(x,W?a:l),ft(x,W?f:o),se&&se()},b=(x,W)=>{x._isLeaving=!1,ft(x,h),ft(x,v),ft(x,g),W&&W()},L=x=>(W,se)=>{const ce=x?$:B,V=()=>R(W,x,se);at(ce,[W,V]),Ur(()=>{ft(W,x?c:i),ze(W,x?a:l),Vr(ce)||Br(W,s,S,V)})};return fe(t,{onBeforeEnter(x){at(N,[x]),ze(x,i),ze(x,o)},onBeforeAppear(x){at(F,[x]),ze(x,c),ze(x,f)},onEnter:L(!1),onAppear:L(!0),onLeave(x,W){x._isLeaving=!0;const se=()=>b(x,W);ze(x,h),ze(x,g),pa(),Ur(()=>{x._isLeaving&&(ft(x,h),ze(x,v),Vr(m)||Br(x,s,U,se))}),at(m,[x,se])},onEnterCancelled(x){R(x,!1),at(p,[x])},onAppearCancelled(x){R(x,!0),at(j,[x])},onLeaveCancelled(x){b(x),at(M,[x])}})}function ua(e){if(e==null)return null;if(ne(e))return[cs(e.enter),cs(e.leave)];{const t=cs(e);return[t,t]}}function cs(e){return nl(e)}function ze(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function ft(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function Ur(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let da=0;function Br(e,t,n,s){const r=e._endId=++da,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ha(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,g),i()},g=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[_]||"").split(", "),r=s(`${Je}Delay`),i=s(`${Je}Duration`),o=kr(r,i),l=s(`${$t}Delay`),c=s(`${$t}Duration`),f=kr(l,c);let a=null,h=0,g=0;t===Je?o>0&&(a=Je,h=o,g=i.length):t===$t?f>0&&(a=$t,h=f,g=c.length):(h=Math.max(o,f),a=h>0?o>f?Je:$t:null,g=a?a===Je?i.length:c.length:0);const v=a===Je&&/\b(transform|all)(,|$)/.test(s(`${Je}Property`).toString());return{type:a,timeout:h,propCount:g,hasTransform:v}}function kr(e,t){for(;e.lengthWr(n)+Wr(e[s])))}function Wr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function pa(){return document.body.offsetHeight}function ga(e,t,n){const s=e[zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Kr=Symbol("_vod"),ma=Symbol("_vsh"),ya=Symbol(""),va=/(^|;)\s*display\s*:/;function ba(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Cn(s,l,"")}else for(const o in t)n[o]==null&&Cn(s,o,"");for(const o in n)o==="display"&&(i=!0),Cn(s,o,n[o])}else if(r){if(t!==n){const o=s[ya];o&&(n+=";"+o),s.cssText=n,i=va.test(n)}}else t&&e.removeAttribute("style");Kr in e&&(e[Kr]=i?s.display:"",e[ma]&&(s.display="none"))}const qr=/\s*!important$/;function Cn(e,t,n){if(K(n))n.forEach(s=>Cn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=_a(e,t);qr.test(n)?e.setProperty(rt(s),n.replace(qr,""),"important"):e[s]=n}}const Gr=["Webkit","Moz","ms"],as={};function _a(e,t){const n=as[t];if(n)return n;let s=Ie(t);if(s!=="filter"&&s in e)return as[t]=s;s=$n(s);for(let r=0;rfs||(xa.then(()=>fs=0),fs=Date.now());function Ca(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Fe(Aa(s,n.value),t,5,[s])};return n.value=e,n.attached=Ta(),n}function Aa(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Zr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ra=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?ga(e,s,o):t==="style"?ba(e,n,s):Zt(t)?$s(t)||Sa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Oa(e,t,s,o))?(Jr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Xr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Jr(e,Ie(t),s):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Xr(e,t,s,o))};function Oa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Zr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Zr(t)&&re(n)?!1:t in e}const ei=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>Sn(t,n):t};function Ma(e){e.target.composing=!0}function ti(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const us=Symbol("_assign"),qf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[us]=ei(r);const i=s||r.props&&r.props.type==="number";Et(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=ws(l)),e[us](l)}),n&&Et(e,"change",()=>{e.value=e.value.trim()}),t||(Et(e,"compositionstart",Ma),Et(e,"compositionend",ti),Et(e,"change",ti))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[us]=ei(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?ws(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Pa=["ctrl","shift","alt","meta"],Ia={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Pa.some(n=>e[`${n}Key`]&&!t.includes(n))},Gf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=rt(r.key);if(t.some(o=>o===i||La[o]===i))return e(r)})},Mo=fe({patchProp:Ra},la);let kt,ni=!1;function Na(){return kt||(kt=Nc(Mo))}function Fa(){return kt=ni?kt:Fc(Mo),ni=!0,kt}const Xf=(...e)=>{const t=Na().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Io(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Po(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Jf=(...e)=>{const t=Fa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Io(s);if(r)return n(r,!0,Po(r))},t};function Po(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Io(e){return re(e)?document.querySelector(e):e}const zf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Ha=window.__VP_SITE_DATA__;function or(e){return _i()?(ul(e),!0):!1}function ke(e){return typeof e=="function"?e():Hi(e)}const Lo=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Qf=e=>e!=null,$a=Object.prototype.toString,Da=e=>$a.call(e)==="[object Object]",Qt=()=>{},si=ja();function ja(){var e,t;return Lo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Va(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const No=e=>e();function Ua(e,t={}){let n,s,r=Qt;const i=l=>{clearTimeout(l),r(),r=Qt};return l=>{const c=ke(e),f=ke(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Ba(e=No){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Bn(t),pause:n,resume:s,eventFilter:r}}function ka(e){return Yn()}function Fo(...e){if(e.length!==1)return Ul(...e);const t=e[0];return typeof t=="function"?Bn(Dl(()=>({get:t,set:Qt}))):oe(t)}function Ho(e,t,n={}){const{eventFilter:s=No,...r}=n;return Be(e,Va(s,t),r)}function Wa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Ba(s);return{stop:Ho(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function lr(e,t=!0,n){ka()?Lt(e,n):t?e():kn(e)}function Zf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Ho(e,t,{...i,eventFilter:Ua(s,{maxWait:r})})}function eu(e,t,n){let s;ae(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Qt}=s,c=oe(!r),f=o?Js(t):oe(t);let a=0;return rr(async h=>{if(!c.value)return;a++;const g=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const _=await e(S=>{h(()=>{i&&(i.value=!1),v||S()})});g===a&&(f.value=_)}catch(_){l(_)}finally{i&&g===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const He=Lo?window:void 0;function $o(e){var t;const n=ke(e);return(t=n==null?void 0:n.$el)!=null?t:n}function It(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=He):[t,n,s,r]=e,!t)return Qt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,g,v)=>(a.addEventListener(h,g,v),()=>a.removeEventListener(h,g,v)),c=Be(()=>[$o(t),ke(r)],([a,h])=>{if(o(),!a)return;const g=Da(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(_=>l(a,v,_,g))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return or(f),f}function Ka(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function tu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Ka(t);return It(r,i,a=>{a.repeat&&ke(l)||c(a)&&n(a)},o)}function qa(){const e=oe(!1),t=Yn();return t&&Lt(()=>{e.value=!0},t),e}function Ga(e){const t=qa();return ie(()=>(t.value,!!e()))}function Do(e,t={}){const{window:n=He}=t,s=Ga(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=rr(()=>{s.value&&(l(),r=n.matchMedia(ke(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return or(()=>{c(),l(),r=void 0}),i}const vn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bn="__vueuse_ssr_handlers__",Ya=Xa();function Xa(){return bn in vn||(vn[bn]=vn[bn]||{}),vn[bn]}function jo(e,t){return Ya[e]||t}function Vo(e){return Do("(prefers-color-scheme: dark)",e)}function Ja(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const za={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ri="vueuse-storage";function cr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=He,eventFilter:g,onError:v=b=>{console.error(b)},initOnMounted:_}=s,S=(a?Js:oe)(typeof t=="function"?t():t);if(!n)try{n=jo("getDefaultStorage",()=>{var b;return(b=He)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return S;const U=ke(t),N=Ja(U),B=(r=s.serializer)!=null?r:za[N],{pause:p,resume:m}=Wa(S,()=>F(S.value),{flush:i,deep:o,eventFilter:g});h&&l&&lr(()=>{n instanceof Storage?It(h,"storage",j):It(h,ri,R),_&&j()}),_||j();function M(b,L){if(h){const x={key:e,oldValue:b,newValue:L,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(ri,{detail:x}))}}function F(b){try{const L=n.getItem(e);if(b==null)M(L,null),n.removeItem(e);else{const x=B.write(b);L!==x&&(n.setItem(e,x),M(L,x))}}catch(L){v(L)}}function $(b){const L=b?b.newValue:n.getItem(e);if(L==null)return c&&U!=null&&n.setItem(e,B.write(U)),U;if(!b&&f){const x=B.read(L);return typeof f=="function"?f(x,U):N==="object"&&!Array.isArray(x)?{...U,...x}:x}else return typeof L!="string"?L:B.read(L)}function j(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){S.value=U;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==B.write(S.value)&&(S.value=$(b))}catch(L){v(L)}finally{b?kn(m):m()}}}}function R(b){j(b.detail)}return S}const Qa="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Za(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=Vo({window:r}),v=ie(()=>g.value?"dark":"light"),_=c||(o==null?Fo(s):cr(o,s,i,{window:r,listenToStorageChanges:l})),S=ie(()=>_.value==="auto"?v.value:_.value),U=jo("updateHTMLAttrs",(m,M,F)=>{const $=typeof m=="string"?r==null?void 0:r.document.querySelector(m):$o(m);if(!$)return;const j=new Set,R=new Set;let b=null;if(M==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(W=>(W||"").split(/\s/g)).filter(Boolean).forEach(W=>{x.includes(W)?j.add(W):R.add(W)})}else b={key:M,value:F};if(j.size===0&&R.size===0&&b===null)return;let L;a&&(L=r.document.createElement("style"),L.appendChild(document.createTextNode(Qa)),r.document.head.appendChild(L));for(const x of j)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(r.getComputedStyle(L).opacity,document.head.removeChild(L))});function N(m){var M;U(t,n,(M=h[m])!=null?M:m)}function B(m){e.onChanged?e.onChanged(m,N):N(m)}Be(S,B,{flush:"post",immediate:!0}),lr(()=>B(S.value));const p=ie({get(){return f?_.value:S.value},set(m){_.value=m}});try{return Object.assign(p,{store:_,system:v,state:S})}catch{return p}}function ef(e={}){const{valueDark:t="dark",valueLight:n="",window:s=He}=e,r=Za({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:Vo({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ds(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function nu(e,t,n={}){const{window:s=He}=n;return cr(e,t,s==null?void 0:s.localStorage,n)}function Uo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const hs=new WeakMap;function su(e,t=!1){const n=oe(t);let s=null,r="";Be(Fo(e),l=>{const c=ds(ke(l));if(c){const f=c;if(hs.get(f)||hs.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ds(ke(e));!l||n.value||(si&&(s=It(l,"touchmove",c=>{tf(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ds(ke(e));!l||!n.value||(si&&(s==null||s()),l.style.overflow=r,hs.delete(l),n.value=!1)};return or(o),ie({get(){return n.value},set(l){l?i():o()}})}function ru(e,t,n={}){const{window:s=He}=n;return cr(e,t,s==null?void 0:s.sessionStorage,n)}function iu(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return It(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function ou(e={}){const{window:t=He,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),lr(f),It("resize",f,{passive:!0}),r){const a=Do("(orientation: portrait)");Be(a,()=>f())}return{width:l,height:c}}const ps={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var gs={};const Bo=/^(?:[a-z]+:|\/\/)/i,nf="vitepress-theme-appearance",sf=/#.*$/,rf=/[?#].*$/,of=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",ko={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function lf(e,t,n=!1){if(t===void 0)return!1;if(e=ii(`/${e}`),n)return new RegExp(t).test(e);if(ii(t)!==e)return!1;const s=t.match(sf);return s?(ge?location.hash:"")===s[0]:!0}function ii(e){return decodeURI(e).replace(rf,"").replace(of,"$1")}function cf(e){return Bo.test(e)}function af(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!cf(n)&&lf(t,`/${n}/`,!0))||"root"}function ff(e,t){var s,r,i,o,l,c,f;const n=af(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Ko(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Wo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=uf(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function uf(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function df(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Ko(e,t){return[...e.filter(n=>!df(t,n)),...t]}const hf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,pf=/^[a-z]:/i;function oi(e){const t=pf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(hf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ms=new Set;function gf(e){if(ms.size===0){const n=typeof process=="object"&&(gs==null?void 0:gs.VITE_EXTRA_EXTENSIONS)||(ps==null?void 0:ps.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ms.add(s))}const t=e.split(".").pop();return t==null||!ms.has(t.toLowerCase())}function lu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const mf=Symbol(),yt=Js(Ha);function cu(e){const t=ie(()=>ff(yt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n?ef({storageKey:nf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Be(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>Wo(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function yf(){const e=Pt(mf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function vf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function li(e){return Bo.test(e)||!e.startsWith("/")?e:vf(yt.value.base,e)}function bf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=oi(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${oi(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let An=[];function au(e){An.push(e),Kn(()=>{An=An.filter(t=>t!==e)})}function _f(){let e=yt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ci(e,n);else if(Array.isArray(e))for(const s of e){const r=ci(s,n);if(r){t=r;break}}return t}function ci(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const wf=Symbol(),qo="http://a.com",Sf=()=>({path:"/",component:null,data:ko});function fu(e,t){const n=Un(Sf()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=ys(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==ys(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var g;if(await((g=s.onBeforePageLoad)==null?void 0:g.call(s,l))===!1)return;const a=new URL(l,qo),h=i=a.pathname;try{let v=await e(h);if(!v)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:S}=v;if(!_)throw new Error(`Invalid route component: ${_}`);n.path=ge?h:li(h),n.component=En(_),n.data=En(S),ge&&kn(()=>{let U=yt.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!yt.value.cleanUrls&&!U.endsWith("/")&&(U+=".html"),U!==a.pathname&&(a.pathname=U,l=U+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let N=null;try{N=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(B){console.warn(B)}if(N){ai(N,a.hash);return}}window.scrollTo(0,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!f)try{const _=await fetch(yt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:li(h),n.component=t?En(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...ko,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:g,hash:v,search:_}=new URL(f,c.baseURI),S=new URL(location.href);h===S.origin&&gf(g)&&(l.preventDefault(),g===S.pathname&&_===S.search?(v!==S.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:S.href,newURL:a}))),v?ai(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(ys(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ef(){const e=Pt(wf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Go(){return Ef().route}function ai(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-_f()+i;requestAnimationFrame(r)}}function ys(e){const t=new URL(e,qo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),yt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const vs=()=>An.forEach(e=>e()),uu=Zs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Go(),{site:n}=yf();return()=>Ns(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Ns(t.component,{onVnodeMounted:vs,onVnodeUpdated:vs,onVnodeUnmounted:vs}):"404 Page Not Found"])}}),xf="modulepreload",Tf=function(e){return"/"+e},fi={},du=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=Tf(c),c in fi)return;fi[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":xf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((g,v)=>{h.addEventListener("load",g),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},hu=Zs({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function pu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function gu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),Cf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function Cf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function mu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=bs(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(bs);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};rr(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Wo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):bs(["meta",{name:"description",content:a}]),r(Ko(o.head,Rf(c)))})}function bs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Af(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Rf(e){return e.filter(t=>!Af(t))}const _s=new Set,Yo=()=>document.createElement("link"),Of=e=>{const t=Yo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const Pf=ge&&(_n=Yo())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?Of:Mf;function yu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!_s.has(c)){_s.add(c);const f=bf(c);f&&Pf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):_s.add(l))})})};Lt(s);const r=Go();Be(()=>r.path,s),Kn(()=>{n&&n.disconnect()})}export{zi as $,_f as A,Ff as B,$f as C,Js as D,au as E,Se as F,le as G,Hf as H,Bo as I,Go as J,Xc as K,Pt as L,ou as M,Vs as N,tu as O,kn as P,iu as Q,ge as R,Bn as S,Kf as T,Nf as U,du as V,su as W,Ac as X,Yf as Y,jf as Z,zf as _,xo as a,Gf as a0,Vf as a1,kf as a2,Ns as a3,mu as a4,wf as a5,cu as a6,mf as a7,uu as a8,hu as a9,yt as aa,Jf as ab,fu as ac,bf as ad,yu as ae,gu as af,pu as ag,ke as ah,$o as ai,Qf as aj,or as ak,eu as al,ru as am,nu as an,Zf as ao,Ef as ap,It as aq,If as ar,qf as as,ae as at,Lf as au,En as av,Xf as aw,lu as ax,Is as b,Bf as c,Zs as d,Wf as e,gf as f,li as g,ie as h,cf as i,Eo as j,Hi as k,lf as l,Do as m,Us as n,Ps as o,oe as p,Be as q,Df as r,rr as s,al as t,yf as u,Lt as v,Jl as w,Kn as x,Uf as y,hc as z}; diff --git a/assets/chunks/theme.DeEHWU5r.js b/assets/chunks/theme.DeEHWU5r.js new file mode 100644 index 0000000..61d6ae6 --- /dev/null +++ b/assets/chunks/theme.DeEHWU5r.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.BipGruSN.js","assets/chunks/framework.BnE-uSbk.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c as u,r as c,n as M,a as E,t as N,b as k,w as v,e as h,T as ue,_ as g,u as Ee,i as Fe,f as De,g as de,h as y,j as p,k as r,l as z,m as ae,p as w,q as O,s as X,v as q,x as ve,y as pe,z as Oe,A as Ge,B as K,F as I,C,D as Le,E as Q,G as m,H as F,I as Ve,J as Z,K as j,L as x,M as Ue,N as Se,O as re,P as je,Q as Te,R as ee,S as ze,U as qe,V as Ke,W as Ne,X as we,Y as Re,Z as We,$ as Je,a0 as Ye,a1 as Xe,a2 as Qe,a3 as ge}from"./framework.BnE-uSbk.js";const Ze=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:M(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[E(N(e.text),1)])],2))}}),xe={key:0,class:"VPBackdrop"},et=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(ue,{name:"fade"},{default:v(()=>[e.show?(a(),u("div",xe)):h("",!0)]),_:1}))}}),tt=g(et,[["__scopeId","data-v-56304577"]]),L=Ee;function nt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ie(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Fe(o)||o.startsWith("#")||!n.startsWith("http")||!De(e))return o;const{site:i}=L(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return de(l)}function W({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=L(),l=y(()=>{var d,$;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([d,$])=>l.value.label===$.label?[]:{text:$.label,link:st($.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function st(o,e,t,s){return e?o.replace(/\/$/,"")+ie(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ot={class:"NotFound"},at={class:"code"},rt={class:"title"},it={class:"quote"},lt={class:"action"},ct=["href","aria-label"],ut=_({__name:"NotFound",setup(o){const{theme:e}=L(),{currentLang:t}=W();return(s,n)=>{var i,l,f,d,$;return a(),u("div",ot,[p("p",at,N(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",rt,N(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",it,N(((f=r(e).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",lt,[p("a",{class:"link",href:r(de)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},N((($=r(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,ct)])])}}}),dt=g(ut,[["__scopeId","data-v-e885b82e"]]);function Me(o,e){if(Array.isArray(o))return J(o);if(o==null)return[];e=ie(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ie(n))),s=t?o[t]:[];return Array.isArray(s)?J(s):J(s.items,s.base)}function vt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function pt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function le(o,e){return Array.isArray(e)?e.some(t=>le(o,t)):z(o,e.link)?!0:e.items?le(o,e.items):!1}function J(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=J(s.items,n)),s})}function G(){const{frontmatter:o,page:e,theme:t}=L(),s=ae("(min-width: 960px)"),n=w(!1),i=y(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?Me(B,S):[]}),l=w(i.value);O(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(l.value=i.value)});const f=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),d=y(()=>$?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),$=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),V=y(()=>f.value&&s.value),b=y(()=>f.value?vt(l.value):[]);function P(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():P()}return{isOpen:n,sidebar:l,sidebarGroups:b,hasSidebar:f,hasAside:$,leftAside:d,isSidebarEnabled:V,open:P,close:T,toggle:A}}function ft(o,e){let t;X(()=>{t=o.value?document.activeElement:void 0}),q(()=>{window.addEventListener("keyup",s)}),ve(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function mt(o){const{page:e,hash:t}=L(),s=w(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),l=w(!1),f=()=>{l.value=z(e.value.relativePath,o.value.link)};O([e,o,t],f),q(f);const d=y(()=>l.value?!0:o.value.items?le(e.value.relativePath,o.value.items):!1),$=y(()=>!!(o.value.items&&o.value.items.length));X(()=>{s.value=!!(n.value&&o.value.collapsed)}),pe(()=>{(l.value||d.value)&&(s.value=!1)});function V(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:l,hasActiveLink:d,hasChildren:$,toggle:V}}function ht(){const{hasSidebar:o}=G(),e=ae("(min-width: 960px)"),t=ae("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ce=[];function Ie(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function me(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:_t(t),link:"#"+t.id,level:s}});return kt(e,o)}function _t(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function kt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(l=>l.level>=s&&l.level<=n),ce.length=0;for(const{element:l,link:f}of o)ce.push({element:l,link:f});const i=[];e:for(let l=0;l=0;d--){const $=o[d];if($.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Oe(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const f=window.scrollY,d=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(f+d-$)<1,b=ce.map(({element:T,link:A})=>({link:A,top:gt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!b.length){l(null);return}if(f<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:A}of b){if(A>f+Ge()+4)break;P=T}l(P)}function l(f){n&&n.classList.remove("active"),f==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function gt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const $t=["href","title"],yt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(I,null,C(t.headers,({children:i,link:l,title:f})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:f},N(f),9,$t),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ae=g(yt,[["__scopeId","data-v-438521a0"]]),Pt={class:"content"},Lt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Vt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Le([]);Q(()=>{s.value=me(e.value.outline??t.value.outline)});const n=w(),i=w();return bt(n,i),(l,f)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:M(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",Pt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Lt,N(r(Ie)(r(t))),1),m(Ae,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),St=g(Vt,[["__scopeId","data-v-3598c0c0"]]),Tt={class:"VPDocAsideCarbonAds"},Nt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Tt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),wt={class:"VPDocAside"},Mt=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),u("div",wt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),m(St),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Nt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),It=g(Mt,[["__scopeId","data-v-0642dfdb"]]);function At(){const{theme:o,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Bt(){const{page:o,theme:e,frontmatter:t}=L();return y(()=>{var $,V,b,P,T,A,B,S;const s=Me(e.value.sidebar,o.value.relativePath),n=pt(s),i=Ct(n,H=>H.link.replace(/[?#].*$/,"")),l=i.findIndex(H=>z(o.value.relativePath,H.link)),f=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:f?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[l-1])==null?void 0:T.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((B=i[l+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[l+1])==null?void 0:S.link)}}})}function Ct(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(F(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ht={class:"VPLastUpdated"},Et=["datetime"],Ft=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=L(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),l=w("");return q(()=>{X(()=>{var f,d,$;l.value=new Intl.DateTimeFormat((d=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&d.forceLocale?s.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(f,d)=>{var $;return a(),u("p",Ht,[E(N((($=r(e).lastUpdated)==null?void 0:$.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},N(l.value),9,Et)])}}}),Dt=g(Ft,[["__scopeId","data-v-de6040cf"]]),Ot={key:0,class:"VPDocFooter"},Gt={key:0,class:"edit-info"},Ut={key:0,class:"edit-link"},jt={key:1,class:"last-updated"},zt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},qt={class:"pager"},Kt=["innerHTML"],Rt=["innerHTML"],Wt={class:"pager"},Jt=["innerHTML"],Yt=["innerHTML"],Xt=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=At(),i=Bt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),f=y(()=>t.value.lastUpdated),d=y(()=>l.value||f.value||i.value.prev||i.value.next);return($,V)=>{var b,P,T,A;return d.value?(a(),u("footer",Ot,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(a(),u("div",Gt,[l.value?(a(),u("div",Ut,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[V[0]||(V[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),E(" "+N(r(n).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(a(),u("div",jt,[m(Dt)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",zt,[V[1]||(V[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",qt,[(T=r(i).prev)!=null&&T.link?(a(),k(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Kt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Rt)]}),_:1},8,["href"])):h("",!0)]),p("div",Wt,[(A=r(i).next)!=null&&A.link?(a(),k(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,Jt),p("span",{class:"title",innerHTML:r(i).next.text},null,8,Yt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Qt=g(Xt,[["__scopeId","data-v-df54bf16"]]),Zt={class:"container"},xt={class:"aside-container"},en={class:"aside-content"},tn={class:"content"},nn={class:"content-container"},sn={class:"main"},on=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=Z(),{hasSidebar:s,hasAside:n,leftAside:i}=G(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,d)=>{const $=K("Content");return a(),u("div",{class:M(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[c(f.$slots,"doc-top",{},void 0,!0),p("div",Zt,[r(n)?(a(),u("div",{key:0,class:M(["aside",{"left-aside":r(i)}])},[d[0]||(d[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",xt,[p("div",en,[m(It,null,{"aside-top":v(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",tn,[p("div",nn,[c(f.$slots,"doc-before",{},void 0,!0),p("main",sn,[m($,{class:M(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(Qt,null,{"doc-footer-before":v(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(f.$slots,"doc-after",{},void 0,!0)])])]),c(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(on,[["__scopeId","data-v-bda83294"]]),rn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),k(F(s.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[E(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),ln=g(rn,[["__scopeId","data-v-cd85e10a"]]),cn=["src","alt"],un=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),u(I,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",j({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,cn)):(a(),u(I,{key:1},[m(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,j({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Y=g(un,[["__scopeId","data-v-c39f99d1"]]),dn={class:"container"},vn={class:"main"},pn={key:0,class:"name"},fn=["innerHTML"],mn=["innerHTML"],hn=["innerHTML"],_n={key:0,class:"actions"},kn={key:0,class:"image"},bn={class:"image-container"},gn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=x("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:M(["VPHero",{"has-image":t.image||r(e)}])},[p("div",dn,[p("div",vn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",pn,[p("span",{innerHTML:t.name,class:"clip"},null,8,fn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,mn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,hn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",_n,[(a(!0),u(I,null,C(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[m(ln,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",kn,[p("div",bn,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Y,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),$n=g(gn,[["__scopeId","data-v-894dba19"]]),yn=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).hero?(a(),k($n,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Pn={class:"box"},Ln={key:0,class:"icon"},Vn=["innerHTML"],Sn=["innerHTML"],Tn=["innerHTML"],Nn={key:4,class:"link-text"},wn={class:"link-text-value"},Mn=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Pn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Ln,[m(Y,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Y,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Vn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Sn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Tn)):h("",!0),e.linkText?(a(),u("div",Nn,[p("p",wn,[E(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),In=g(Mn,[["__scopeId","data-v-f4124de3"]]),An={key:0,class:"VPFeatures"},Bn={class:"container"},Cn={class:"items"},Hn=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",An,[p("div",Bn,[p("div",Cn,[(a(!0),u(I,null,C(s.features,i=>(a(),u("div",{key:i.title,class:M(["item",[t.value]])},[m(In,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),En=g(Hn,[["__scopeId","data-v-e2562975"]]),Fn=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).features?(a(),k(En,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),Dn=_({__name:"VPHomeContent",setup(o){const{width:e}=Ue({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Se(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),On=g(Dn,[["__scopeId","data-v-7f03820f"]]),Gn={class:"VPHome"},Un=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),u("div",Gn,[c(t.$slots,"home-hero-before",{},void 0,!0),m(yn,null,{"home-hero-info-before":v(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),m(Fn),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(On,{key:0},{default:v(()=>[m(n)]),_:1})):(a(),k(n,{key:1}))])}}}),jn=g(Un,[["__scopeId","data-v-2885c995"]]),zn={},qn={class:"VPPage"};function Kn(o,e){const t=K("Content");return a(),u("div",qn,[c(o.$slots,"page-top"),m(t),c(o.$slots,"page-bottom")])}const Rn=g(zn,[["render",Kn]]),Wn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=G();return(n,i)=>(a(),u("div",{class:M(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[m(dt)],!0):r(t).layout==="page"?(a(),k(Rn,{key:1},{"page-top":v(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(jn,{key:2},{"home-hero-before":v(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(F(r(t).layout),{key:3})):(a(),k(an,{key:4},{"doc-top":v(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Jn=g(Wn,[["__scopeId","data-v-c393ce4c"]]),Yn={class:"container"},Xn=["innerHTML"],Qn=["innerHTML"],Zn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=G();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:M(["VPFooter",{"has-sidebar":r(s)}])},[p("div",Yn,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Xn)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,Qn)):h("",!0)])],2)):h("",!0)}}),xn=g(Zn,[["__scopeId","data-v-c0e892f2"]]);function es(){const{theme:o,frontmatter:e}=L(),t=Le([]),s=y(()=>t.value.length>0);return Q(()=>{t.value=me(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const ts={class:"menu-text"},ns={class:"header"},ss={class:"outline"},os=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=w(!1),n=w(0),i=w(),l=w();function f(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}O(s,b=>{if(b){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),re("Escape",()=>{s.value=!1}),Q(()=>{s.value=!1});function d(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),je(()=>{s.value=!1}))}function V(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:d,class:M({open:s.value})},[p("span",ts,N(r(Ie)(r(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:V},N(r(t).returnToTopLabel||"Return to top"),1)),m(ue,{name:"flyout"},{default:v(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[p("div",ns,[p("a",{class:"top-link",href:"#",onClick:V},N(r(t).returnToTopLabel||"Return to top"),1)]),p("div",ss,[m(Ae,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),as=g(os,[["__scopeId","data-v-bd0d7a9d"]]),rs={class:"container"},is=["aria-expanded"],ls={class:"menu-text"},cs=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=G(),{headers:n}=es(),{y:i}=Te(),l=w(0);q(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Q(()=>{n.value=me(t.value.outline??e.value.outline)});const f=y(()=>n.value.length===0),d=y(()=>f.value&&!s.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:f.value,fixed:d.value}));return(V,b)=>r(t).layout!=="home"&&(!d.value||r(i)>=l.value)?(a(),u("div",{key:0,class:M($.value)},[p("div",rs,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",ls,N(r(e).sidebarMenuLabel||"Menu"),1)],8,is)):h("",!0),m(as,{headers:r(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),us=g(cs,[["__scopeId","data-v-2d19ae34"]]);function ds(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=Z();return O(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const vs={},ps={class:"VPSwitch",type:"button",role:"switch"},fs={class:"check"},ms={key:0,class:"icon"};function hs(o,e){return a(),u("button",ps,[p("span",fs,[o.$slots.default?(a(),u("span",ms,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const _s=g(vs,[["render",hs],["__scopeId","data-v-4cbccd3d"]]),ks=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=x("toggle-appearance",()=>{e.value=!e.value}),n=w("");return pe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),k(_s,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:v(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),he=g(ks,[["__scopeId","data-v-f05ee76d"]]),bs={key:0,class:"VPNavBarAppearance"},gs=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",bs,[m(he)])):h("",!0)}}),$s=g(gs,[["__scopeId","data-v-4a283ace"]]),_e=w();let Be=!1,oe=0;function ys(o){const e=w(!1);if(ee){!Be&&Ps(),oe++;const t=O(_e,s=>{var n,i,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});ve(()=>{t(),oe--,oe||Ls()})}return ze(e)}function Ps(){document.addEventListener("focusin",Ce),Be=!0,_e.value=document.activeElement}function Ls(){document.removeEventListener("focusin",Ce)}function Ce(){_e.value=document.activeElement}const Vs={class:"VPMenuLink"},Ss=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),u("div",Vs,[m(D,{class:M({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[E(N(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),te=g(Ss,[["__scopeId","data-v-c2bd4b6a"]]),Ts={class:"VPMenuGroup"},Ns={key:0,class:"title"},ws=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Ts,[e.text?(a(),u("p",Ns,N(e.text),1)):h("",!0),(a(!0),u(I,null,C(e.items,s=>(a(),u(I,null,["link"in s?(a(),k(te,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ms=g(ws,[["__scopeId","data-v-6a016bef"]]),Is={class:"VPMenu"},As={key:0,class:"items"},Bs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Is,[e.items?(a(),u("div",As,[(a(!0),u(I,null,C(e.items,s=>(a(),u(I,{key:JSON.stringify(s)},["link"in s?(a(),k(te,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(F(s.component),j({key:1,ref_for:!0},s.props),null,16)):(a(),k(Ms,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Cs=g(Bs,[["__scopeId","data-v-24137c6b"]]),Hs=["aria-expanded","aria-label"],Es={key:0,class:"text"},Fs=["innerHTML"],Ds={key:1,class:"vpi-more-horizontal icon"},Os={class:"menu"},Gs=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();ys({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Es,[n.icon?(a(),u("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Fs)):h("",!0),i[3]||(i[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Ds))],8,Hs),p("div",Os,[m(Cs,{items:n.items},{default:v(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=g(Gs,[["__scopeId","data-v-e9b4f5ec"]]),Us=["href","aria-label","innerHTML"],js=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Us))}}),zs=g(js,[["__scopeId","data-v-92fc0818"]]),qs={class:"VPSocialLinks"},Ks=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",qs,[(a(!0),u(I,null,C(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),k(zs,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(Ks,[["__scopeId","data-v-e6305f9c"]]),Rs={key:0,class:"group translations"},Ws={class:"trans-title"},Js={key:1,class:"group"},Ys={class:"item appearance"},Xs={class:"label"},Qs={class:"appearance-action"},Zs={key:2,class:"group"},xs={class:"item social-links"},eo=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=W({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>i.value?(a(),k(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(s).length&&r(n).label?(a(),u("div",Rs,[p("p",Ws,N(r(n).label),1),(a(!0),u(I,null,C(r(s),d=>(a(),k(te,{key:d.link,item:d},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Js,[p("div",Ys,[p("p",Xs,N(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",Qs,[m(he)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Zs,[p("div",xs,[m(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),to=g(eo,[["__scopeId","data-v-5343c639"]]),no=["aria-expanded"],so=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,no))}}),oo=g(so,[["__scopeId","data-v-4b339e23"]]),ao=["innerHTML"],ro=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),k(D,{class:M({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,ao)]),_:1},8,["class","href","noIcon","target","rel"]))}}),io=g(ro,[["__scopeId","data-v-8c75cb77"]]),lo=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=i=>"component"in i?!1:"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,l)=>(a(),k(ke,{class:M({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),co={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},uo=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),u("nav",co,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(I,null,C(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),k(io,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),j({key:1,ref_for:!0},n.props),null,16)):(a(),k(lo,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),vo=g(uo,[["__scopeId","data-v-048e1dbd"]]);function po(o){const{localeIndex:e,theme:t}=L();function s(n){var A,B,S;const i=n.split("."),l=(A=t.value.search)==null?void 0:A.options,f=l&&typeof l=="object",d=f&&((S=(B=l.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,$=f&&l.translations||null;let V=d,b=$,P=o;const T=i.pop();for(const H of i){let U=null;const R=P==null?void 0:P[H];R&&(U=P=R);const ne=b==null?void 0:b[H];ne&&(U=b=ne);const se=V==null?void 0:V[H];se&&(U=V=se),R||(P=U),ne||(b=U),se||(V=U)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return s}const fo=["aria-label"],mo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},$e=_({__name:"VPNavBarSearchButton",setup(o){const t=po({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",mo,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",ho,N(r(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,fo))}}),_o={class:"VPNavBarSearch"},ko={id:"local-search"},bo={key:1,id:"docsearch"},go=_({__name:"VPNavBarSearch",setup(o){const e=qe(()=>Ke(()=>import("./VPLocalSearchBox.BipGruSN.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=L(),n=w(!1),i=w(!1);q(()=>{});function l(){n.value||(n.value=!0,setTimeout(f,16))}function f(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function d(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=w(!1);re("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),re("/",b=>{d(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return a(),u("div",_o,[r(V)==="local"?(a(),u(I,{key:0},[$.value?(a(),k(r(e),{key:0,onClose:P[0]||(P[0]=A=>$.value=!1)})):h("",!0),p("div",ko,[m($e,{onClick:P[1]||(P[1]=A=>$.value=!0)})])],64)):r(V)==="algolia"?(a(),u(I,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((T=r(s).search)==null?void 0:T.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",bo,[m($e,{onClick:l})]))],64)):h("",!0)])}}}),$o=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),k(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),yo=g($o,[["__scopeId","data-v-94ff375c"]]),Po=["href","rel","target"],Lo={key:1},Vo={key:2},So=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=G(),{currentLang:n}=W(),i=y(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),f=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,$)=>(a(),u("div",{class:M(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:l.value,target:f.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(Y,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",Lo,N(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",Vo,N(r(e).title),1)):h("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Po)],2))}}),To=g(So,[["__scopeId","data-v-7a924078"]]),No={class:"items"},wo={class:"title"},Mo=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=W({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),k(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",No,[p("p",wo,N(r(s).label),1),(a(!0),u(I,null,C(r(t),l=>(a(),k(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Io=g(Mo,[["__scopeId","data-v-711929df"]]),Ao={class:"wrapper"},Bo={class:"container"},Co={class:"title"},Ho={class:"content"},Eo={class:"content-body"},Fo=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Te(),{hasSidebar:s}=G(),{frontmatter:n}=L(),i=w({});return pe(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,f)=>(a(),u("div",{class:M(["VPNavBar",i.value])},[p("div",Ao,[p("div",Bo,[p("div",Co,[m(To,null,{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Ho,[p("div",Eo,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),m(go,{class:"search"}),m(vo,{class:"menu"}),m(Io,{class:"translations"}),m($s,{class:"appearance"}),m(yo,{class:"social-links"}),m(to,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),m(oo,{class:"hamburger",active:l.isScreenOpen,onClick:f[0]||(f[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Do=g(Fo,[["__scopeId","data-v-07662647"]]),Oo={key:0,class:"VPNavScreenAppearance"},Go={class:"text"},Uo=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Oo,[p("p",Go,N(r(t).darkModeSwitchLabel||"Appearance"),1),m(he)])):h("",!0)}}),jo=g(Uo,[["__scopeId","data-v-1184bba9"]]),zo=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=x("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),qo=g(zo,[["__scopeId","data-v-887c01d7"]]),Ko=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=x("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[E(N(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=g(Ko,[["__scopeId","data-v-ac505d70"]]),Ro={class:"VPNavScreenMenuGroupSection"},Wo={key:0,class:"title"},Jo=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Ro,[e.text?(a(),u("p",Wo,N(e.text),1)):h("",!0),(a(!0),u(I,null,C(e.items,s=>(a(),k(He,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Yo=g(Jo,[["__scopeId","data-v-2342a2c8"]]),Xo=["aria-controls","aria-expanded"],Qo=["innerHTML"],Zo=["id"],xo={key:0,class:"item"},ea={key:1,class:"item"},ta={key:2,class:"group"},na=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,Qo),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),p("div",{id:s.value,class:"items"},[(a(!0),u(I,null,C(i.items,f=>(a(),u(I,{key:JSON.stringify(f)},["link"in f?(a(),u("div",xo,[m(He,{item:f},null,8,["item"])])):"component"in f?(a(),u("div",ea,[(a(),k(F(f.component),j({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(a(),u("div",ta,[m(Yo,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Zo)],2))}}),sa=g(na,[["__scopeId","data-v-500ca7be"]]),oa={key:0,class:"VPNavScreenMenu"},aa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),u("nav",oa,[(a(!0),u(I,null,C(r(e).nav,n=>(a(),u(I,{key:JSON.stringify(n)},["link"in n?(a(),k(qo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),j({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(sa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ra=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),k(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ia={class:"list"},la=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=W({correspondingLink:!0}),s=w(!1);function n(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:M(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),E(" "+N(r(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",ia,[(a(!0),u(I,null,C(r(e),f=>(a(),u("li",{key:f.link,class:"item"},[m(D,{class:"link",href:f.link},{default:v(()=>[E(N(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ca=g(la,[["__scopeId","data-v-be6f93b3"]]),ua={class:"container"},da=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Ne(ee?document.body:null);return(s,n)=>(a(),k(ue,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ua,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),m(aa,{class:"menu"}),m(ca,{class:"translations"}),m(jo,{class:"appearance"}),m(ra,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),va=g(da,[["__scopeId","data-v-4b67b75c"]]),pa={key:0,class:"VPNav"},fa=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=ds(),{frontmatter:n}=L(),i=y(()=>n.value.navbar!==!1);return we("close-screen",t),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,f)=>i.value?(a(),u("header",pa,[m(Do,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":v(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(va,{open:r(e)},{"nav-screen-content-before":v(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ma=g(fa,[["__scopeId","data-v-ee9a087b"]]),ha=["role","tabindex"],_a={key:1,class:"items"},ka=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:l,hasChildren:f,toggle:d}=mt(y(()=>e.item)),$=y(()=>f.value?"section":"div"),V=y(()=>n.value?"a":"div"),b=y(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":l.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function B(){e.item.link&&d()}return(S,H)=>{const U=K("VPSidebarItem",!0);return a(),k(F($.value),{class:M(["VPSidebarItem",T.value])},{default:v(()=>[S.item.text?(a(),u("div",j({key:0,class:"item",role:P.value},We(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[H[1]||(H[1]=p("div",{class:"indicator"},null,-1)),S.item.link?(a(),k(D,{key:0,tag:V.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),k(F(b.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(F(b.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Re(B,["enter"]),tabindex:"0"},H[0]||(H[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,ha)):h("",!0),S.item.items&&S.item.items.length?(a(),u("div",_a,[S.depth<5?(a(!0),u(I,{key:0},C(S.item.items,R=>(a(),k(U,{key:R.text,item:R,depth:S.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),ba=g(ka,[["__scopeId","data-v-18366d3f"]]),ga=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=w(!0);let t=null;return q(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Je(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(I,null,C(s.items,i=>(a(),u("div",{key:i.text,class:M(["group",{"no-transition":e.value}])},[m(ba,{item:i,depth:0},null,8,["item"])],2))),128))}}),$a=g(ga,[["__scopeId","data-v-fbf76fa5"]]),ya={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Pa=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=G(),s=o,n=w(null),i=Ne(ee?document.body:null);O([s,n],()=>{var f;s.open?(i.value=!0,(f=n.value)==null||f.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=w(0);return O(e,()=>{l.value+=1},{deep:!0}),(f,d)=>r(t)?(a(),u("aside",{key:0,class:M(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=Ye(()=>{},["stop"]))},[d[2]||(d[2]=p("div",{class:"curtain"},null,-1)),p("nav",ya,[d[1]||(d[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(f.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k($a,{items:r(e),key:l.value},null,8,["items"])),c(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),La=g(Pa,[["__scopeId","data-v-96ab8f77"]]),Va=_({__name:"VPSkipLink",setup(o){const e=Z(),t=w();O(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),u(I,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Sa=g(Va,[["__scopeId","data-v-5018365e"]]),Ta=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=G(),n=Z();O(()=>n.path,s),ft(e,s);const{frontmatter:i}=L(),l=Xe(),f=y(()=>!!l["home-hero-image"]);return we("hero-image-slot-exists",f),(d,$)=>{const V=K("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:M(["Layout",r(i).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),m(Sa),m(tt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(ma,null,{"nav-bar-title-before":v(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(us,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(La,{open:r(e)},{"sidebar-nav-before":v(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(Jn,null,{"page-top":v(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(xn),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(V,{key:1}))}}}),Na=g(Ta,[["__scopeId","data-v-f87af1e9"]]),ye={Layout:Na,enhanceApp:({app:o})=>{o.component("Badge",Ze)}},wa=(o,e)=>o.flatMap(t=>[t,e]).slice(0,-1),Ma=_({name:"Publications",props:{pubs:{type:Array,required:!0}},setup(o){const e={arxiv:{name:"arXiv preprint",link:n=>`https://arxiv.org/abs/${n}`},doi:{name:"doi",link:n=>`https://doi.org/${n}`},online:{name:"online",link:n=>n},conference:{name:"conference version",link:n=>n},slides:{name:"slides",link:n=>n},github:{name:"github",link:n=>`https://github.com/${n}`}};return{formattedLink:(n,i)=>e[n].link(i),getLinkName:n=>e[n].name}},render(){var o;return m("div",null,[(o=this.pubs)==null?void 0:o.map(e=>m("div",null,[m("h3",null,[e.type]),m("ul",null,[e.items.map(t=>m("li",null,[m("div",null,[m("span",{class:"pubs-title"},[t.title]),m("span",null,[E(", by ")]),wa(t.authors.map(s=>m("span",{class:"pubs-author"},[s.link?m("a",{href:s.link},[s.name]):s.name])),m("span",null,[E(", ")]))]),t.venue?m("div",{class:"pubs-venue"},[t.venue]):null,m("div",null,[t.links.map(s=>m("a",{class:"pubs-link",href:this.formattedLink(s[0],s[1])},[E(" "),this.getLinkName(s[0])]))])]))])]))])}}),Ia={};function Aa(o,e){return a(),u("div",null,e[0]||(e[0]=[Qe('
',2)]))}const Pe=g(Ia,[["render",Aa],["__scopeId","data-v-26586a7a"]]),Ca={...ye,Layout(){return ge(ye.Layout,null,{"home-hero-before":()=>ge(Pe)})},enhanceApp({app:o}){o.component("Publications",Ma).component("AyaHeader",Pe)}};export{Ca as R,po as c,L as u}; diff --git a/assets/guide_fake-literate.md.5HoY67ds.js b/assets/guide_fake-literate.md.5HoY67ds.js new file mode 100644 index 0000000..c8449e6 --- /dev/null +++ b/assets/guide_fake-literate.md.5HoY67ds.js @@ -0,0 +1,45 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Fake literate mode","description":"","frontmatter":{},"headers":[],"relativePath":"guide/fake-literate.md","filePath":"guide/fake-literate.md","lastUpdated":1717700861000}'),t={name:"guide/fake-literate.md"};function l(p,s,h,k,d,r){return e(),i("div",null,s[0]||(s[0]=[n(`

Fake literate mode

The Aya compiler generates styled (e.g. with colors and text attributes) code snippets for many targets, like HTML, LaTeX, etc., and it's tempting to use the same tool but for different languages. This is what the fake literate mode is for. Let me know if you want other backend supports.

To start, install the latest version of Aya, put the following code in a file named hello.flcl:

keyword: data where;
+symbol: ≃;
+data: Int;
+constructor: zero succ;
+------
+data Int where
+  zero : Int
+  succ : Int ≃ Int

Then, run the following command to generate literate output, where you replace <AYA> with either java -jar <path-to-aya.jar> or aya depending on your installation:

<AYA> --fake-literate hello.flcl

Then it will print the following output:

\\AyaKeyword{data}\\hspace{0.5em}\\AyaData{Int}\\hspace{0.5em}\\AyaKeyword{where}~\\\\
+\\hspace{1.0em}\\AyaConstructor{zero}\\hspace{0.5em}:\\hspace{0.5em}\\AyaData{Int}~\\\\
+\\hspace{1.0em}\\AyaConstructor{succ}\\hspace{0.5em}:\\hspace{0.5em}\\AyaData{Int}\\hspace{0.5em}≃\\hspace{0.5em}\\AyaData{Int}

You may add -o hello.tex to let it write to a file instead of printing to the console. With minimal configurations such as below, you can compile it with any LaTeX toolchain:

tex
\\usepackage{newunicodechar}
+\\newunicodechar{≃}{\\ensuremath{\\mathrel{\\simeq}}}
+
+\\usepackage{xcolor}
+
+% Aya highlighting
+\\definecolor{AyaFn}{HTML}{00627a}
+\\definecolor{AyaConstructor}{HTML}{067d17}
+\\definecolor{AyaStruct}{HTML}{00627a}
+\\definecolor{AyaGeneralized}{HTML}{00627a}
+\\definecolor{AyaData}{HTML}{00627a}
+\\definecolor{AyaPrimitive}{HTML}{00627a}
+\\definecolor{AyaKeyword}{HTML}{0033b3}
+\\definecolor{AyaComment}{HTML}{8c8c8c}
+\\definecolor{AyaField}{HTML}{871094}
+\\newcommand\\AyaFn[1]{\\textcolor{AyaFn}{#1}}
+\\newcommand\\AyaConstructor[1]{\\textcolor{AyaConstructor}{#1}}
+\\newcommand\\AyaCall[1]{#1}
+\\newcommand\\AyaStruct[1]{\\textcolor{AyaStruct}{#1}}
+\\newcommand\\AyaGeneralized[1]{\\textcolor{AyaGeneralized}{#1}}
+\\newcommand\\AyaData[1]{\\textcolor{AyaData}{#1}}
+\\newcommand\\AyaPrimitive[1]{\\textcolor{AyaPrimitive}{#1}}
+\\newcommand\\AyaKeyword[1]{\\textcolor{AyaKeyword}{#1}}
+\\newcommand\\AyaLocalVar[1]{\\textit{#1}}
+\\newcommand\\AyaComment[1]{\\textit{\\textcolor{AyaComment}{#1}}}
+\\newcommand\\AyaField[1]{\\textcolor{AyaField}{#1}}

The following code provides a quick macro to include the generated code:

tex
\\newcommand{\\includeFlcl}[1]{{
+\\vspace{0.15cm}
+\\RaggedRight
+% https://tex.stackexchange.com/a/35936/145304
+\\setlength\\parindent{0pt}
+\\setlength{\\leftskip}{1cm}
+\\input{#1}
+
+\\setlength{\\leftskip}{0cm}
+\\vspace{0.15cm}
+}}

Use \\includeFlcl{hello} to include the generated code in your document.

`,13)]))}const E=a(t,[["render",l]]);export{c as __pageData,E as default}; diff --git a/assets/guide_fake-literate.md.5HoY67ds.lean.js b/assets/guide_fake-literate.md.5HoY67ds.lean.js new file mode 100644 index 0000000..c8449e6 --- /dev/null +++ b/assets/guide_fake-literate.md.5HoY67ds.lean.js @@ -0,0 +1,45 @@ +import{_ as a,c as i,a2 as n,o as e}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Fake literate mode","description":"","frontmatter":{},"headers":[],"relativePath":"guide/fake-literate.md","filePath":"guide/fake-literate.md","lastUpdated":1717700861000}'),t={name:"guide/fake-literate.md"};function l(p,s,h,k,d,r){return e(),i("div",null,s[0]||(s[0]=[n(`

Fake literate mode

The Aya compiler generates styled (e.g. with colors and text attributes) code snippets for many targets, like HTML, LaTeX, etc., and it's tempting to use the same tool but for different languages. This is what the fake literate mode is for. Let me know if you want other backend supports.

To start, install the latest version of Aya, put the following code in a file named hello.flcl:

keyword: data where;
+symbol: ≃;
+data: Int;
+constructor: zero succ;
+------
+data Int where
+  zero : Int
+  succ : Int ≃ Int

Then, run the following command to generate literate output, where you replace <AYA> with either java -jar <path-to-aya.jar> or aya depending on your installation:

<AYA> --fake-literate hello.flcl

Then it will print the following output:

\\AyaKeyword{data}\\hspace{0.5em}\\AyaData{Int}\\hspace{0.5em}\\AyaKeyword{where}~\\\\
+\\hspace{1.0em}\\AyaConstructor{zero}\\hspace{0.5em}:\\hspace{0.5em}\\AyaData{Int}~\\\\
+\\hspace{1.0em}\\AyaConstructor{succ}\\hspace{0.5em}:\\hspace{0.5em}\\AyaData{Int}\\hspace{0.5em}≃\\hspace{0.5em}\\AyaData{Int}

You may add -o hello.tex to let it write to a file instead of printing to the console. With minimal configurations such as below, you can compile it with any LaTeX toolchain:

tex
\\usepackage{newunicodechar}
+\\newunicodechar{≃}{\\ensuremath{\\mathrel{\\simeq}}}
+
+\\usepackage{xcolor}
+
+% Aya highlighting
+\\definecolor{AyaFn}{HTML}{00627a}
+\\definecolor{AyaConstructor}{HTML}{067d17}
+\\definecolor{AyaStruct}{HTML}{00627a}
+\\definecolor{AyaGeneralized}{HTML}{00627a}
+\\definecolor{AyaData}{HTML}{00627a}
+\\definecolor{AyaPrimitive}{HTML}{00627a}
+\\definecolor{AyaKeyword}{HTML}{0033b3}
+\\definecolor{AyaComment}{HTML}{8c8c8c}
+\\definecolor{AyaField}{HTML}{871094}
+\\newcommand\\AyaFn[1]{\\textcolor{AyaFn}{#1}}
+\\newcommand\\AyaConstructor[1]{\\textcolor{AyaConstructor}{#1}}
+\\newcommand\\AyaCall[1]{#1}
+\\newcommand\\AyaStruct[1]{\\textcolor{AyaStruct}{#1}}
+\\newcommand\\AyaGeneralized[1]{\\textcolor{AyaGeneralized}{#1}}
+\\newcommand\\AyaData[1]{\\textcolor{AyaData}{#1}}
+\\newcommand\\AyaPrimitive[1]{\\textcolor{AyaPrimitive}{#1}}
+\\newcommand\\AyaKeyword[1]{\\textcolor{AyaKeyword}{#1}}
+\\newcommand\\AyaLocalVar[1]{\\textit{#1}}
+\\newcommand\\AyaComment[1]{\\textit{\\textcolor{AyaComment}{#1}}}
+\\newcommand\\AyaField[1]{\\textcolor{AyaField}{#1}}

The following code provides a quick macro to include the generated code:

tex
\\newcommand{\\includeFlcl}[1]{{
+\\vspace{0.15cm}
+\\RaggedRight
+% https://tex.stackexchange.com/a/35936/145304
+\\setlength\\parindent{0pt}
+\\setlength{\\leftskip}{1cm}
+\\input{#1}
+
+\\setlength{\\leftskip}{0cm}
+\\vspace{0.15cm}
+}}

Use \\includeFlcl{hello} to include the generated code in your document.

`,13)]))}const E=a(t,[["render",l]]);export{c as __pageData,E as default}; diff --git a/assets/guide_haskeller-tutorial.md.GKsyNqV0.js b/assets/guide_haskeller-tutorial.md.GKsyNqV0.js new file mode 100644 index 0000000..5febc1e --- /dev/null +++ b/assets/guide_haskeller-tutorial.md.GKsyNqV0.js @@ -0,0 +1,75 @@ +import{_ as F,c as N,a2 as h,j as a,a as s,o as M}from"./chunks/framework.BnE-uSbk.js";const V={mounted(){const d=new Map;function y(r){const e=r.querySelectorAll("a[href]");for(const t of e){const o=t.href,p=d.get(o)??new Set;p.add(t),d.set(o,p)}for(const t of e)t.onmouseover=function(){for(const o of d.get(this.href))o.classList.add("hover-highlight")},t.onmouseout=function(){for(const o of d.get(this.href))o.classList.remove("hover-highlight")}}function u(r){return decodeURIComponent(atob(r).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const k=(r=>{const e={};return(...t)=>{const o=JSON.stringify(t);return e[o]=e[o]||r(...t)}})(u);class f{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(t=>t!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let t=this.list.find(o=>o.userCreatedFrom===e);this.dismissIfNotUsed(t)}createHoverFor(e,t,o){let p=this.list.find(i=>i.userCreatedFrom===e);if(p&&p.userClicked)return p;let x=[];const b=this.list.filter(i=>{if(this.allowAutoDismissal(i))return x.push(i),!1;const l=i.userCreatedFrom,v=e;let c=v;for(;c;){if(c===l)return!0;c=c.parentElement}for(c=l;c;){if(c===v)return!0;c=c.parentElement}return!1});x.forEach(i=>this.dismiss(i));let n=document.createElement("div");n.userCreatedFrom=e,n.innerHTML="×"+k(t),n.classList.add("AyaTooltipPopup"),y(n);let A=this;if(n.handleEvent=function(i){if(i.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let l=this.children[0];if(!l)return;let v=this;l.style.visibility="visible",l.addEventListener("click",c=>A.dismiss(v))}i.type==="mouseover"&&(this.userIsThinking=!0),i.type==="mouseout"&&(this.userIsThinking=!1,A.dismissIfNotUsed(this))},n.addEventListener("click",n),n.addEventListener("mouseover",n),n.addEventListener("mouseout",n),o.appendChild(n),n.style.left=`${e.offsetLeft}px`,b.length===0){const i=e.getBoundingClientRect(),l=n.getBoundingClientRect();i.bottom+l.height+30>window.innerHeight?n.style.top=`calc(${e.offsetTop-l.height+8}px - 3em)`:n.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const i=Math.max(...b.map(l=>l.offsetTop+l.offsetHeight));n.style.top=`${i+8}px`}return this.list.push(n),n}}let g=new f;function m(r){return function(){let e=this;const t=e.getAttribute("data-tooltip-text");t&&(r?g.createHoverFor(e,t,document.body):g.fireAutoDismissalFor(e))}}y(document);{let r=document.getElementsByClassName("aya-tooltip");for(let e=0;eSo you know some Haskell

Great. I expect you to know something about GHCi and algebraic data types. This is an Aya tutorial for Haskell programmers. If you find a bug, open an issue on GitHub!

Working with the REPL

Aya has a REPL that works similar to GHCi. You can start it by running aya -i in your terminal, and you can start typing definitions or expressions.

bash
aya -i

If you're using jar with java, use the following instead:

bash
java --enable-preview -jar cli-fatjar.jar -i

In the REPL, you can use :l to load a file, :q to quit, and :? to get help. Use :t to show the type. Since it's dependent type, you can toggle normalization levels by :normalize followed by NF, WHNF, or NULL (don't normalize).

To work multiline, use the pair :{ and :} -- same as GHCi.

Aya supports pretty-printing of any terms, including ✨lambdas✨. Note that Aya does not automatically support generic lambdas, so typing \\x => x would not work. You need to specify the type of x, like \\(x : Int) => x.

Aya support fn as an alias to \\ instead of λ, similar to Coq and Lean (but not Agda). This is because users (especially mathematicians) are likely to use λ as a variable name. Similarly, we used Fn over Pi or Π for the same reason.

Working with projects

Read project-tutorial, it is very short. It is recommended to practice the following with an Aya project in VSCode, see vscode-tutorial.

About modules:

  • Aya module names are separated by ::, not ..
  • Aya infers the module names automagically, using the same rule as of Haskell.
  • Aya imports (import X) are qualified by default, use open import X to unqualify. This is short for import X followed by open X.
  • Aya supports restricted import open import X using (x) (this only imports x from X) you may also use open import X hiding (x) to import everything except x from X.
  • Aya supports renamed import open import X using (x as y) and the meaning is obvious.
  • To re-export, use a public open.

Ok, let's write some code!

Programming in Aya

Natural numbers. In Haskell:

haskell
data Nat = Zero | Suc Nat

In Aya (we replaced the keyword data with inductive because we want to use it as a package name):

',20),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Nat",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" | "),a("a",{id:"Mian-Nat-zero",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-zero"},[a("span",{class:"Constructor"},"zero")]),s(" | "),a("a",{id:"Mian-Nat-suc",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")])]),s(` +`)],-1),h(`

We don't enforce capitalization of constructors. The constructors need to be qualified (like Nat::zero) to access. As you may expect, Nat automatically becomes a module, so we can use open and public open to unqualify the constructors.

Bonus: if you define a data type that looks like Nat, then you can use numeric literals.

Functions are defined with def, followed by pattern matching. Consider this natural number addition in Haskell (intentionally not called + to avoid name clash with Prelude):

haskell
(<+>) :: Nat -> Nat -> Nat
+Zero <+> n = n
+Suc m <+> n = Suc (m <+> n)
+
+infixl 6 <+>

In Aya (remember the numeric literal thing?):

`,5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("a",{href:"#Nat"},"Nat"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("a",{id:"Mian-3c2b3e",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v1529115495",class:"aya-hover","aya-hover-text":"Nat",href:"#v1529115495"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1529115495"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1138697171",class:"aya-hover","aya-hover-text":"Nat",href:"#v1138697171"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v602423811",class:"aya-hover","aya-hover-text":"Nat",href:"#v602423811"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1138697171"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v602423811"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),h(`

There are plenty of differences. Let's go through them one by one.

The infixl declares <+> to be a left-associative infix operator. Other options include infix, infixr, fixl, and fixr. Without it, the function will work the same as normal function. Unlike Haskell, we do not distinguish "operator" names and "function" names.

We do not use a number to denote precedence, but a partial order. This allows arbitrary insertion of new precedence level into previously defined ones. Say you want <+> to have a lower precedence than <*>, you can do:

def infixl <+> Nat Nat : Nat
+/// .... omitted
+looser <*>

You also have tighter, with the obvious meaning.

The parameters and the return type are separated using :. The parameter types can be written directly, without ->. Aya allow naming the parameters like this:

def oh (x : Nat) : Nat

These names can be used for one-linear function bodies:

`,8),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-oh",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-oh"},[a("span",{class:"Fn"},"oh")]),s(" ("),a("a",{id:"v107915280",class:"aya-hover","aya-hover-text":"Nat",href:"#v107915280"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v107915280"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),h(`

Aya supports a painless version of the section syntax, where the top-level does not need parentheses. See the following REPL output (the underscored names are internally generated variable names. If you have an idea on how to make them better, open an issue and let's discuss!).

> 1 <+>
+suc
+
+> <+> 1
+λ _7 ⇒ _7 <+> 1
+
+> 1 <+> 1
+suc 1
+
+> 2 <+>
+λ _5 ⇒ suc (suc _5)
+
+> <+> 2
+λ _7 ⇒ _7 <+> 2

When we only need to pattern match on a subset of the parameters, we can use the elim keyword:

`,3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("a",{id:"Mian-3aNoExport-5b2b5d",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-5b2b5d"},[a("span",{class:"Fn"},"[+]")]),s(" ("),a("a",{id:"v575935098",class:"aya-hover","aya-hover-text":"Nat",href:"#v575935098"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1367937032",class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v575935098"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1093864783",class:"aya-hover","aya-hover-text":"Nat",href:"#v1093864783"},[a("span",{class:"LocalVar"},"m")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1093864783"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-5b2b5d"},[a("span",{class:"Fn"},"[+]")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),h(`

Type-level programming

In Haskell:

haskell
id :: a -> a
+id x = x

In Aya:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-id",class:"aya-hover","aya-hover-text":"A",href:"#Mian-id"},[a("span",{class:"Fn"},"id")]),s(" {"),a("a",{id:"v1041109062",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1041109062"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s("} ("),a("a",{id:"v616674002",class:"aya-hover","aya-hover-text":"A",href:"#v616674002"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1041109062"},[a("span",{class:"LocalVar"},"A")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v616674002"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),h("

Observations:

  • Type parameters have to be explicitly qualified using curly braces.
  • Curly braces denote parameters that are omitted (and will be inferred by type checker) in the pattern matching and invocations. So, parentheses denote parameters that are not omitted.
  • Apart from Type, we also have Set, and ISet. For now, don't use the others.

Type constructors are like {F : Type -> Type} (and yes, the -> denotes function types, works for both values and types), very obvious. Definition of Maybe in Aya:

",3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Maybe",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(" ("),a("a",{id:"v304354378",class:"aya-hover","aya-hover-text":"Type 0",href:"#v304354378"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| `),a("a",{id:"Mian-Maybe-nothing",class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(` +| `),a("a",{id:"Mian-Maybe-just",class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v304354378"},[a("span",{class:"LocalVar"},"A")])]),s(` +`)],-1),a("p",null,[s("Here, "),a("code",null,"(A : Type)"),s(" is an explicit parameter, because you write "),a("code",null,"Maybe Nat"),s(", not just "),a("code",null,"Maybe"),s(".")],-1),a("p",null,[s("There is a way to automagically insert the implicit parameters -- the "),a("code",null,"variable"),s(" keyword.")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v854487022",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` + +`),a("span",{class:"Comment"},"// Now, since you are using A, so Aya inserts {A : Type}"),s(` +`),a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+aWQ8L2NvZGU+IHNoYWRvd3MgYSBwcmV2aW91cyBsb2NhbCBkZWZpbml0aW9uIGZyb20gb3V0ZXIgc2NvcGU8L2NvZGU+CjwvcHJlPgo="},[a("span",{class:"Warning"},[a("a",{id:"Mian-3aNoExport-id",class:"aya-hover","aya-hover-text":"A",href:"#Mian-3aNoExport-id"},[a("span",{class:"Fn"},"id")])])]),s(" ("),a("a",{id:"v131872530",class:"aya-hover","aya-hover-text":"A",href:"#v131872530"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v131872530"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),a("p",null,"Aya supports type aliases as functions. For example, we may define the type of binary operators as a function:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-BinOp",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-BinOp"},[a("span",{class:"Fn"},"BinOp")]),s(" ("),a("a",{id:"v98826337",class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")])]),s(` +`)],-1),a("p",null,[s("Then, we can define "),a("code",null,"<+>"),s(" as:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+Jmx0OysmZ3Q7PC9jb2RlPiBzaGFkb3dzIGEgcHJldmlvdXMgbG9jYWwgZGVmaW5pdGlvbiBmcm9tIG91dGVyIHNjb3BlPC9jb2RlPgo8L3ByZT4K"},[a("span",{class:"Warning"},[a("a",{id:"Mian-3aNoExport-3c2b3e",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-3c2b3e"},[a("span",{class:"Fn"},"<+>")])])]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-BinOp"},[a("span",{class:"Fn"},"BinOp")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v573958827",class:"aya-hover","aya-hover-text":"Nat",href:"#v573958827"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v573958827"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v391135083",class:"aya-hover","aya-hover-text":"Nat",href:"#v391135083"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v1003292107",class:"aya-hover","aya-hover-text":"Nat",href:"#v1003292107"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v391135083"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1003292107"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),a("h2",{id:"type-families",tabindex:"-1"},[s("Type families "),a("a",{class:"header-anchor",href:"#type-families","aria-label":'Permalink to "Type families"'},"​")],-1),a("p",null,[s("In Aya, type families are functions. Consider the following code (they are using the "),a("code",null,"variable A"),s(" defined above):")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Comment"},"// Unit type"),s(` +`),a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Unit",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Unit"},[a("span",{class:"Data"},"Unit")]),s(" | "),a("a",{id:"Mian-Unit-unit",class:"aya-hover","aya-hover-text":"Unit",href:"#Mian-Unit-unit"},[a("span",{class:"Constructor"},"unit")]),s(` + +`),a("span",{class:"Comment"},"// A type family"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-FromJust",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(" ("),a("a",{id:"v914374969",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v914374969"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{id:"v1930240356",class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Unit"},[a("span",{class:"Data"},"Unit")]),s(` + +`),a("span",{class:"Comment"},"// A function that uses the type family"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-fromJust",class:"aya-hover","aya-hover-text":"FromJust x",href:"#Mian-fromJust"},[a("span",{class:"Fn"},"fromJust")]),s(" ("),a("a",{id:"v1323434987",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"x")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{id:"v1365767549",class:"aya-hover","aya-hover-text":"A",href:"#v1365767549"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1365767549"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Unit",href:"#Mian-Unit-unit"},[a("span",{class:"Constructor"},"unit")])]),s(` +`)],-1),a("p",null,[s("And "),a("code",null,"fromJust (just a)"),s(" will evaluate to "),a("code",null,"a"),s(". In Haskell, you need to use some language extensions alongside some scary keywords. These functions are available in constructors, too:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Example",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Example"},[a("span",{class:"Data"},"Example")]),s(" ("),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| `),a("a",{id:"Mian-Example-cons",class:"aya-hover","aya-hover-text":"Example A",href:"#Mian-Example-cons"},[a("span",{class:"Constructor"},"cons")]),s(" ("),a("a",{id:"v1824837049",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1824837049"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1824837049"},[a("span",{class:"LocalVar"},"x")]),s(")")]),s(` +`)],-1),h(`

It is recommended to play with it in the REPL to get a feel of it.

There is a famous example of dependent types in Haskell -- the sized vector type:

haskell
{-# LANGUAGE GADTs #-}
+{-# LANGUAGE DataKinds #-}
+-- Maybe you need more, I don't remember exactly
+
+data Vec :: Nat -> Type -> Type where
+  Nil :: Vec Zero a
+  (:<) :: a -> Vec n a -> Vec (Suc n) a
+infixr :<

In Aya, we have a better syntax:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Vec",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{id:"v442199874",class:"aya-hover","aya-hover-text":"Nat",href:"#v442199874"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") ("),a("a",{id:"v1345900725",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1345900725"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| 0, `),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v839998248",class:"aya-hover","aya-hover-text":"Type 0",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("a",{id:"Mian-Vec-nil",class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+bjwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v102174918",class:"aya-hover","aya-hover-text":"Nat",href:"#v102174918"},[a("span",{class:"LocalVar"},"n")])])]),s(", "),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v52514534",class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-Vec-3a3c",class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v102174918"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")]),s(")")]),s(` +`)],-1),a("p",null,[s("The "),a("code",null,":<"),s(" constructor is defined as a right-associative infix operator. And yes, you can define like vector append painlessly:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v375457936",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{id:"v710190911",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` + +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-2b2b",class:"aya-hover","aya-hover-text":"Vec (n <+> m) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(", "),a("a",{id:"v375466577",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v375466577"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v375466577"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v127791068",class:"aya-hover","aya-hover-text":"A",href:"#v127791068"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{id:"v405896924",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v405896924"},[a("span",{class:"LocalVar"},"xs")]),s(", "),a("a",{id:"v1309335839",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1309335839"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v127791068"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc (?n A x xs ys n m)) (?A A x xs ys n m)",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v405896924"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n A x xs ys n m <+> ?m A x xs ys n m) (?A A x xs ys n m)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1309335839"},[a("span",{class:"LocalVar"},"ys")]),s(` +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")])]),s(` +`)],-1),h(`

Imagine how much work this is in Haskell.

Overlapping patterns

There is one more bonus: in Aya, you may modify the definition of <+> to be:

overlap def infixl <+> Nat Nat : Nat
+| 0, n => n
+| n, 0 => n
+| suc m, n => suc (m <+> n)

It says we not only compute 0 + n = n, but when the first parameter is neither 0 nor suc, we may take a look at the second parameter and seek for other potential computations. This is completely useless at runtime, but very good for type checking. For instance, we may want a Vec of size n, and what we have is some Vec of size n + 0. Then having n + 0 to directly reduce to n is very useful, otherwise we will need to write a conversion function that does nothing but changes the type, or use unsafeCoerce.

With n + 0 = n judgmentally, we now have more possibilities. For instance, we can make xs ++ nil = xs. This involves in two steps: we first turni ++ into a overlap def, then we add the following clause to ++:

| xs, nil => xs

This makes ++ compute on more cases too.

For more information about this feature, checkout the tutorial for proof assistant users.

`,9)]))}const D=F(V,[["render",T]]);export{C as __pageData,D as default}; diff --git a/assets/guide_haskeller-tutorial.md.GKsyNqV0.lean.js b/assets/guide_haskeller-tutorial.md.GKsyNqV0.lean.js new file mode 100644 index 0000000..5febc1e --- /dev/null +++ b/assets/guide_haskeller-tutorial.md.GKsyNqV0.lean.js @@ -0,0 +1,75 @@ +import{_ as F,c as N,a2 as h,j as a,a as s,o as M}from"./chunks/framework.BnE-uSbk.js";const V={mounted(){const d=new Map;function y(r){const e=r.querySelectorAll("a[href]");for(const t of e){const o=t.href,p=d.get(o)??new Set;p.add(t),d.set(o,p)}for(const t of e)t.onmouseover=function(){for(const o of d.get(this.href))o.classList.add("hover-highlight")},t.onmouseout=function(){for(const o of d.get(this.href))o.classList.remove("hover-highlight")}}function u(r){return decodeURIComponent(atob(r).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const k=(r=>{const e={};return(...t)=>{const o=JSON.stringify(t);return e[o]=e[o]||r(...t)}})(u);class f{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(t=>t!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let t=this.list.find(o=>o.userCreatedFrom===e);this.dismissIfNotUsed(t)}createHoverFor(e,t,o){let p=this.list.find(i=>i.userCreatedFrom===e);if(p&&p.userClicked)return p;let x=[];const b=this.list.filter(i=>{if(this.allowAutoDismissal(i))return x.push(i),!1;const l=i.userCreatedFrom,v=e;let c=v;for(;c;){if(c===l)return!0;c=c.parentElement}for(c=l;c;){if(c===v)return!0;c=c.parentElement}return!1});x.forEach(i=>this.dismiss(i));let n=document.createElement("div");n.userCreatedFrom=e,n.innerHTML="×"+k(t),n.classList.add("AyaTooltipPopup"),y(n);let A=this;if(n.handleEvent=function(i){if(i.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let l=this.children[0];if(!l)return;let v=this;l.style.visibility="visible",l.addEventListener("click",c=>A.dismiss(v))}i.type==="mouseover"&&(this.userIsThinking=!0),i.type==="mouseout"&&(this.userIsThinking=!1,A.dismissIfNotUsed(this))},n.addEventListener("click",n),n.addEventListener("mouseover",n),n.addEventListener("mouseout",n),o.appendChild(n),n.style.left=`${e.offsetLeft}px`,b.length===0){const i=e.getBoundingClientRect(),l=n.getBoundingClientRect();i.bottom+l.height+30>window.innerHeight?n.style.top=`calc(${e.offsetTop-l.height+8}px - 3em)`:n.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const i=Math.max(...b.map(l=>l.offsetTop+l.offsetHeight));n.style.top=`${i+8}px`}return this.list.push(n),n}}let g=new f;function m(r){return function(){let e=this;const t=e.getAttribute("data-tooltip-text");t&&(r?g.createHoverFor(e,t,document.body):g.fireAutoDismissalFor(e))}}y(document);{let r=document.getElementsByClassName("aya-tooltip");for(let e=0;eSo you know some Haskell

Great. I expect you to know something about GHCi and algebraic data types. This is an Aya tutorial for Haskell programmers. If you find a bug, open an issue on GitHub!

Working with the REPL

Aya has a REPL that works similar to GHCi. You can start it by running aya -i in your terminal, and you can start typing definitions or expressions.

bash
aya -i

If you're using jar with java, use the following instead:

bash
java --enable-preview -jar cli-fatjar.jar -i

In the REPL, you can use :l to load a file, :q to quit, and :? to get help. Use :t to show the type. Since it's dependent type, you can toggle normalization levels by :normalize followed by NF, WHNF, or NULL (don't normalize).

To work multiline, use the pair :{ and :} -- same as GHCi.

Aya supports pretty-printing of any terms, including ✨lambdas✨. Note that Aya does not automatically support generic lambdas, so typing \\x => x would not work. You need to specify the type of x, like \\(x : Int) => x.

Aya support fn as an alias to \\ instead of λ, similar to Coq and Lean (but not Agda). This is because users (especially mathematicians) are likely to use λ as a variable name. Similarly, we used Fn over Pi or Π for the same reason.

Working with projects

Read project-tutorial, it is very short. It is recommended to practice the following with an Aya project in VSCode, see vscode-tutorial.

About modules:

  • Aya module names are separated by ::, not ..
  • Aya infers the module names automagically, using the same rule as of Haskell.
  • Aya imports (import X) are qualified by default, use open import X to unqualify. This is short for import X followed by open X.
  • Aya supports restricted import open import X using (x) (this only imports x from X) you may also use open import X hiding (x) to import everything except x from X.
  • Aya supports renamed import open import X using (x as y) and the meaning is obvious.
  • To re-export, use a public open.

Ok, let's write some code!

Programming in Aya

Natural numbers. In Haskell:

haskell
data Nat = Zero | Suc Nat

In Aya (we replaced the keyword data with inductive because we want to use it as a package name):

',20),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Nat",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" | "),a("a",{id:"Mian-Nat-zero",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-zero"},[a("span",{class:"Constructor"},"zero")]),s(" | "),a("a",{id:"Mian-Nat-suc",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")])]),s(` +`)],-1),h(`

We don't enforce capitalization of constructors. The constructors need to be qualified (like Nat::zero) to access. As you may expect, Nat automatically becomes a module, so we can use open and public open to unqualify the constructors.

Bonus: if you define a data type that looks like Nat, then you can use numeric literals.

Functions are defined with def, followed by pattern matching. Consider this natural number addition in Haskell (intentionally not called + to avoid name clash with Prelude):

haskell
(<+>) :: Nat -> Nat -> Nat
+Zero <+> n = n
+Suc m <+> n = Suc (m <+> n)
+
+infixl 6 <+>

In Aya (remember the numeric literal thing?):

`,5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("a",{href:"#Nat"},"Nat"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("a",{id:"Mian-3c2b3e",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v1529115495",class:"aya-hover","aya-hover-text":"Nat",href:"#v1529115495"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1529115495"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1138697171",class:"aya-hover","aya-hover-text":"Nat",href:"#v1138697171"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v602423811",class:"aya-hover","aya-hover-text":"Nat",href:"#v602423811"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1138697171"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v602423811"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),h(`

There are plenty of differences. Let's go through them one by one.

The infixl declares <+> to be a left-associative infix operator. Other options include infix, infixr, fixl, and fixr. Without it, the function will work the same as normal function. Unlike Haskell, we do not distinguish "operator" names and "function" names.

We do not use a number to denote precedence, but a partial order. This allows arbitrary insertion of new precedence level into previously defined ones. Say you want <+> to have a lower precedence than <*>, you can do:

def infixl <+> Nat Nat : Nat
+/// .... omitted
+looser <*>

You also have tighter, with the obvious meaning.

The parameters and the return type are separated using :. The parameter types can be written directly, without ->. Aya allow naming the parameters like this:

def oh (x : Nat) : Nat

These names can be used for one-linear function bodies:

`,8),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-oh",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-oh"},[a("span",{class:"Fn"},"oh")]),s(" ("),a("a",{id:"v107915280",class:"aya-hover","aya-hover-text":"Nat",href:"#v107915280"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v107915280"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),h(`

Aya supports a painless version of the section syntax, where the top-level does not need parentheses. See the following REPL output (the underscored names are internally generated variable names. If you have an idea on how to make them better, open an issue and let's discuss!).

> 1 <+>
+suc
+
+> <+> 1
+λ _7 ⇒ _7 <+> 1
+
+> 1 <+> 1
+suc 1
+
+> 2 <+>
+λ _5 ⇒ suc (suc _5)
+
+> <+> 2
+λ _7 ⇒ _7 <+> 2

When we only need to pattern match on a subset of the parameters, we can use the elim keyword:

`,3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("a",{id:"Mian-3aNoExport-5b2b5d",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-5b2b5d"},[a("span",{class:"Fn"},"[+]")]),s(" ("),a("a",{id:"v575935098",class:"aya-hover","aya-hover-text":"Nat",href:"#v575935098"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1367937032",class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v575935098"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1093864783",class:"aya-hover","aya-hover-text":"Nat",href:"#v1093864783"},[a("span",{class:"LocalVar"},"m")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1093864783"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-5b2b5d"},[a("span",{class:"Fn"},"[+]")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1367937032"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),h(`

Type-level programming

In Haskell:

haskell
id :: a -> a
+id x = x

In Aya:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-id",class:"aya-hover","aya-hover-text":"A",href:"#Mian-id"},[a("span",{class:"Fn"},"id")]),s(" {"),a("a",{id:"v1041109062",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1041109062"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s("} ("),a("a",{id:"v616674002",class:"aya-hover","aya-hover-text":"A",href:"#v616674002"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1041109062"},[a("span",{class:"LocalVar"},"A")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v616674002"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),h("

Observations:

  • Type parameters have to be explicitly qualified using curly braces.
  • Curly braces denote parameters that are omitted (and will be inferred by type checker) in the pattern matching and invocations. So, parentheses denote parameters that are not omitted.
  • Apart from Type, we also have Set, and ISet. For now, don't use the others.

Type constructors are like {F : Type -> Type} (and yes, the -> denotes function types, works for both values and types), very obvious. Definition of Maybe in Aya:

",3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Maybe",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(" ("),a("a",{id:"v304354378",class:"aya-hover","aya-hover-text":"Type 0",href:"#v304354378"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| `),a("a",{id:"Mian-Maybe-nothing",class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(` +| `),a("a",{id:"Mian-Maybe-just",class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v304354378"},[a("span",{class:"LocalVar"},"A")])]),s(` +`)],-1),a("p",null,[s("Here, "),a("code",null,"(A : Type)"),s(" is an explicit parameter, because you write "),a("code",null,"Maybe Nat"),s(", not just "),a("code",null,"Maybe"),s(".")],-1),a("p",null,[s("There is a way to automagically insert the implicit parameters -- the "),a("code",null,"variable"),s(" keyword.")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v854487022",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(` + +`),a("span",{class:"Comment"},"// Now, since you are using A, so Aya inserts {A : Type}"),s(` +`),a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+aWQ8L2NvZGU+IHNoYWRvd3MgYSBwcmV2aW91cyBsb2NhbCBkZWZpbml0aW9uIGZyb20gb3V0ZXIgc2NvcGU8L2NvZGU+CjwvcHJlPgo="},[a("span",{class:"Warning"},[a("a",{id:"Mian-3aNoExport-id",class:"aya-hover","aya-hover-text":"A",href:"#Mian-3aNoExport-id"},[a("span",{class:"Fn"},"id")])])]),s(" ("),a("a",{id:"v131872530",class:"aya-hover","aya-hover-text":"A",href:"#v131872530"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v131872530"},[a("span",{class:"LocalVar"},"x")])]),s(` +`)],-1),a("p",null,"Aya supports type aliases as functions. For example, we may define the type of binary operators as a function:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-BinOp",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-BinOp"},[a("span",{class:"Fn"},"BinOp")]),s(" ("),a("a",{id:"v98826337",class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v98826337"},[a("span",{class:"LocalVar"},"A")])]),s(` +`)],-1),a("p",null,[s("Then, we can define "),a("code",null,"<+>"),s(" as:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixl"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+Jmx0OysmZ3Q7PC9jb2RlPiBzaGFkb3dzIGEgcHJldmlvdXMgbG9jYWwgZGVmaW5pdGlvbiBmcm9tIG91dGVyIHNjb3BlPC9jb2RlPgo8L3ByZT4K"},[a("span",{class:"Warning"},[a("a",{id:"Mian-3aNoExport-3c2b3e",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-3c2b3e"},[a("span",{class:"Fn"},"<+>")])])]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-BinOp"},[a("span",{class:"Fn"},"BinOp")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v573958827",class:"aya-hover","aya-hover-text":"Nat",href:"#v573958827"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v573958827"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v391135083",class:"aya-hover","aya-hover-text":"Nat",href:"#v391135083"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v1003292107",class:"aya-hover","aya-hover-text":"Nat",href:"#v1003292107"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v391135083"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1003292107"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),a("h2",{id:"type-families",tabindex:"-1"},[s("Type families "),a("a",{class:"header-anchor",href:"#type-families","aria-label":'Permalink to "Type families"'},"​")],-1),a("p",null,[s("In Aya, type families are functions. Consider the following code (they are using the "),a("code",null,"variable A"),s(" defined above):")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Comment"},"// Unit type"),s(` +`),a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Unit",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Unit"},[a("span",{class:"Data"},"Unit")]),s(" | "),a("a",{id:"Mian-Unit-unit",class:"aya-hover","aya-hover-text":"Unit",href:"#Mian-Unit-unit"},[a("span",{class:"Constructor"},"unit")]),s(` + +`),a("span",{class:"Comment"},"// A type family"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-FromJust",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(" ("),a("a",{id:"v914374969",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v914374969"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("span",{class:"Keyword"},"Type"),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{id:"v1930240356",class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Unit"},[a("span",{class:"Data"},"Unit")]),s(` + +`),a("span",{class:"Comment"},"// A function that uses the type family"),s(` +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-fromJust",class:"aya-hover","aya-hover-text":"FromJust x",href:"#Mian-fromJust"},[a("span",{class:"Fn"},"fromJust")]),s(" ("),a("a",{id:"v1323434987",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"x")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-just"},[a("span",{class:"Constructor"},"just")]),s(),a("a",{id:"v1365767549",class:"aya-hover","aya-hover-text":"A",href:"#v1365767549"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1365767549"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#Mian-Maybe-nothing"},[a("span",{class:"Constructor"},"nothing")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Unit",href:"#Mian-Unit-unit"},[a("span",{class:"Constructor"},"unit")])]),s(` +`)],-1),a("p",null,[s("And "),a("code",null,"fromJust (just a)"),s(" will evaluate to "),a("code",null,"a"),s(". In Haskell, you need to use some language extensions alongside some scary keywords. These functions are available in constructors, too:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Example",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Example"},[a("span",{class:"Data"},"Example")]),s(" ("),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| `),a("a",{id:"Mian-Example-cons",class:"aya-hover","aya-hover-text":"Example A",href:"#Mian-Example-cons"},[a("span",{class:"Constructor"},"cons")]),s(" ("),a("a",{id:"v1824837049",class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1824837049"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Maybe"},[a("span",{class:"Data"},"Maybe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1358343316"},[a("span",{class:"LocalVar"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-FromJust"},[a("span",{class:"Fn"},"FromJust")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Maybe A",href:"#v1824837049"},[a("span",{class:"LocalVar"},"x")]),s(")")]),s(` +`)],-1),h(`

It is recommended to play with it in the REPL to get a feel of it.

There is a famous example of dependent types in Haskell -- the sized vector type:

haskell
{-# LANGUAGE GADTs #-}
+{-# LANGUAGE DataKinds #-}
+-- Maybe you need more, I don't remember exactly
+
+data Vec :: Nat -> Type -> Type where
+  Nil :: Vec Zero a
+  (:<) :: a -> Vec n a -> Vec (Suc n) a
+infixr :<

In Aya, we have a better syntax:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Vec",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{id:"v442199874",class:"aya-hover","aya-hover-text":"Nat",href:"#v442199874"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") ("),a("a",{id:"v1345900725",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1345900725"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| 0, `),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v839998248",class:"aya-hover","aya-hover-text":"Type 0",href:"#v839998248"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("a",{id:"Mian-Vec-nil",class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+bjwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v102174918",class:"aya-hover","aya-hover-text":"Nat",href:"#v102174918"},[a("span",{class:"LocalVar"},"n")])])]),s(", "),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v52514534",class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-Vec-3a3c",class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v102174918"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v52514534"},[a("span",{class:"LocalVar"},"A")]),s(")")]),s(` +`)],-1),a("p",null,[s("The "),a("code",null,":<"),s(" constructor is defined as a right-associative infix operator. And yes, you can define like vector append painlessly:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v375457936",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{id:"v710190911",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` + +`),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-2b2b",class:"aya-hover","aya-hover-text":"Vec (n <+> m) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v710190911"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3c2b3e"},[a("span",{class:"Fn"},"<+>")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v375457936"},[a("span",{class:"Generalized"},"m")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v854487022"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(", "),a("a",{id:"v375466577",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v375466577"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v375466577"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v127791068",class:"aya-hover","aya-hover-text":"A",href:"#v127791068"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{id:"v405896924",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v405896924"},[a("span",{class:"LocalVar"},"xs")]),s(", "),a("a",{id:"v1309335839",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1309335839"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v127791068"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc (?n A x xs ys n m)) (?A A x xs ys n m)",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v405896924"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n A x xs ys n m <+> ?m A x xs ys n m) (?A A x xs ys n m)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1309335839"},[a("span",{class:"LocalVar"},"ys")]),s(` +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")])]),s(` +`)],-1),h(`

Imagine how much work this is in Haskell.

Overlapping patterns

There is one more bonus: in Aya, you may modify the definition of <+> to be:

overlap def infixl <+> Nat Nat : Nat
+| 0, n => n
+| n, 0 => n
+| suc m, n => suc (m <+> n)

It says we not only compute 0 + n = n, but when the first parameter is neither 0 nor suc, we may take a look at the second parameter and seek for other potential computations. This is completely useless at runtime, but very good for type checking. For instance, we may want a Vec of size n, and what we have is some Vec of size n + 0. Then having n + 0 to directly reduce to n is very useful, otherwise we will need to write a conversion function that does nothing but changes the type, or use unsafeCoerce.

With n + 0 = n judgmentally, we now have more possibilities. For instance, we can make xs ++ nil = xs. This involves in two steps: we first turni ++ into a overlap def, then we add the following clause to ++:

| xs, nil => xs

This makes ++ compute on more cases too.

For more information about this feature, checkout the tutorial for proof assistant users.

`,9)]))}const D=F(V,[["render",T]]);export{C as __pageData,D as default}; diff --git a/assets/guide_index.md.Bb5oyrEG.js b/assets/guide_index.md.Bb5oyrEG.js new file mode 100644 index 0000000..7c9b32c --- /dev/null +++ b/assets/guide_index.md.Bb5oyrEG.js @@ -0,0 +1 @@ +import{_ as a,c as t,a2 as r,o as i}from"./chunks/framework.BnE-uSbk.js";const f=JSON.parse('{"title":"The Aya Prover","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1717718914000}'),l={name:"guide/index.md"};function n(o,e,s,h,d,p){return i(),t("div",null,e[0]||(e[0]=[r('

The Aya Prover

Aya is a programming language and an interactive proof assistant designed for type-directed programming and formalizing math.

The type system of Aya has the following highlights:

  • Set-level cubical features so funExt and quotients are available without axioms (like Agda, redtt, and Arend but not higher-dimensional),
  • Overlapping and order-independent pattern matching makes simple functions compute better,
  • Practical functional programming features similar to Haskell and Idris: dependent pattern matching, typed holes, enchanted synthesis of implicit arguments.

The implementation of the Aya compiler has the following highlights:

  • Efficient type checking by JIT-compiling well-typed definitions to JVM higher-order abstract syntax, so substitution does not traverse terms,
  • Convenient interactive tools such as a language server for VSCode, a REPL, and hyperlinked document generation (demo),
  • Pre-compiled binary release.
',7)]))}const g=a(l,[["render",n]]);export{f as __pageData,g as default}; diff --git a/assets/guide_index.md.Bb5oyrEG.lean.js b/assets/guide_index.md.Bb5oyrEG.lean.js new file mode 100644 index 0000000..7c9b32c --- /dev/null +++ b/assets/guide_index.md.Bb5oyrEG.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,a2 as r,o as i}from"./chunks/framework.BnE-uSbk.js";const f=JSON.parse('{"title":"The Aya Prover","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md","lastUpdated":1717718914000}'),l={name:"guide/index.md"};function n(o,e,s,h,d,p){return i(),t("div",null,e[0]||(e[0]=[r('

The Aya Prover

Aya is a programming language and an interactive proof assistant designed for type-directed programming and formalizing math.

The type system of Aya has the following highlights:

  • Set-level cubical features so funExt and quotients are available without axioms (like Agda, redtt, and Arend but not higher-dimensional),
  • Overlapping and order-independent pattern matching makes simple functions compute better,
  • Practical functional programming features similar to Haskell and Idris: dependent pattern matching, typed holes, enchanted synthesis of implicit arguments.

The implementation of the Aya compiler has the following highlights:

  • Efficient type checking by JIT-compiling well-typed definitions to JVM higher-order abstract syntax, so substitution does not traverse terms,
  • Convenient interactive tools such as a language server for VSCode, a REPL, and hyperlinked document generation (demo),
  • Pre-compiled binary release.
',7)]))}const g=a(l,[["render",n]]);export{f as __pageData,g as default}; diff --git a/assets/guide_install.md.Cs_zw_W1.js b/assets/guide_install.md.Cs_zw_W1.js new file mode 100644 index 0000000..eae799d --- /dev/null +++ b/assets/guide_install.md.Cs_zw_W1.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,a2 as e,o as t}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Install Aya","description":"","frontmatter":{},"headers":[],"relativePath":"guide/install.md","filePath":"guide/install.md","lastUpdated":1717718914000}'),n={name:"guide/install.md"};function l(r,a,h,p,o,d){return t(),i("div",null,a[0]||(a[0]=[e(`

Install Aya

At this stage of development, we recommend using the nightly version of Aya. Go to GitHub Release, there will be a plenty of files. It's updated per-commit in the main branch, but the release date displayed is very old and is an issue of GitHub itself.

Checking the section below that fits your platform. After the installation, run aya --help for general instructions and aya -i to start an interactive REPL. If you chose the jlink version, the bin folder contains the executable scripts.

Download from GitHub Release

Aya is available for Windows, Linux, and macOS, as listed below.

x64aarch64
Windowszipzip
Linuxzipzip
macOSzipzip

Here's a hands-on script I wrote to (re)install Aya to $AYA_PREFIX (define the variable somewhere or replace with your preferred prefix, e.g. /opt/aya) on Linux x64:

bash
#!/bin/bash
+sudo mkdir -p \${AYA_PREFIX:-/tmp}
+sudo chown $USER \${AYA_PREFIX:-/tmp}
+rm -rf \${AYA_PREFIX:-/tmp}/*
+cd \${AYA_PREFIX:-/tmp}
+wget https://github.com/aya-prover/aya-dev/releases/download/nightly-build/aya-prover_jlink_linux-x64.zip
+unzip aya-prover_jlink_linux-x64.zip
+rm aya-prover_jlink_linux-x64.zip
+cd -

If it's the first time you install Aya, you may want to do (or replace ~/.bashrc with your shell's rc file):

bash
echo 'export PATH="$AYA_PREFIX/bin:$PATH"' >> ~/.bashrc
+source ~/.bashrc

Use Aya in GitHub Actions

If you want to use Aya in your GitHub Actions workflow, you can use aya-prover/setup-aya like

yaml
- name: Setup Aya
+  uses: aya-prover/setup-aya@latest
+  with:
+    version: 'nightly-build'

The step above will install the latest version of Aya to PATH. You can find the complete example here.

If you already have Java runtime...

Very cool! Now you can try the prebuilt jars (much smaller and platform-independent) or build Aya from source.

We will (hopefully) always be using the latest release of Java, rather than LTS, unless there are breaking changes on the byte code format.

Prebuilt binary

Download the jar version of cli (for using command line) and lsp (for using VSCode) and run it with java --enable-preview -jar [file name].jar.

Build from source

Clone the repository. Then, run build with ./gradlew followed by a task name. If you have problems downloading dependencies (like you are in China), check out how to let gradle use a proxy.

bash
# build Aya and its language server as applications to \`ide-lsp/build/image/current\`
+# the image is usable in Java-free environments 
+./gradlew jlinkAya --rerun-tasks
+# build Aya and its language server as executable
+# jars to <project>/build/libs/<project>-<version>-fat.jar
+./gradlew fatJar
+# build a platform-dependent installer for Aya and its language
+# server with the jlink artifacts to ide-lsp/build/jpackage
+# requires https://wixtoolset.org/releases on Windows
+./gradlew jpackage
+# run tests and generate coverage report to build/reports
+./gradlew testCodeCoverageReport
+# (Windows only) show the coverage report in your default browser
+./gradlew showCCR

Gradle supports short-handed task names, so you can run ./gradlew fJ to invoke fatJar, tCCR to invoke testCodeCoverageReport, and so on.

`,23)]))}const y=s(n,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_install.md.Cs_zw_W1.lean.js b/assets/guide_install.md.Cs_zw_W1.lean.js new file mode 100644 index 0000000..eae799d --- /dev/null +++ b/assets/guide_install.md.Cs_zw_W1.lean.js @@ -0,0 +1,26 @@ +import{_ as s,c as i,a2 as e,o as t}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Install Aya","description":"","frontmatter":{},"headers":[],"relativePath":"guide/install.md","filePath":"guide/install.md","lastUpdated":1717718914000}'),n={name:"guide/install.md"};function l(r,a,h,p,o,d){return t(),i("div",null,a[0]||(a[0]=[e(`

Install Aya

At this stage of development, we recommend using the nightly version of Aya. Go to GitHub Release, there will be a plenty of files. It's updated per-commit in the main branch, but the release date displayed is very old and is an issue of GitHub itself.

Checking the section below that fits your platform. After the installation, run aya --help for general instructions and aya -i to start an interactive REPL. If you chose the jlink version, the bin folder contains the executable scripts.

Download from GitHub Release

Aya is available for Windows, Linux, and macOS, as listed below.

x64aarch64
Windowszipzip
Linuxzipzip
macOSzipzip

Here's a hands-on script I wrote to (re)install Aya to $AYA_PREFIX (define the variable somewhere or replace with your preferred prefix, e.g. /opt/aya) on Linux x64:

bash
#!/bin/bash
+sudo mkdir -p \${AYA_PREFIX:-/tmp}
+sudo chown $USER \${AYA_PREFIX:-/tmp}
+rm -rf \${AYA_PREFIX:-/tmp}/*
+cd \${AYA_PREFIX:-/tmp}
+wget https://github.com/aya-prover/aya-dev/releases/download/nightly-build/aya-prover_jlink_linux-x64.zip
+unzip aya-prover_jlink_linux-x64.zip
+rm aya-prover_jlink_linux-x64.zip
+cd -

If it's the first time you install Aya, you may want to do (or replace ~/.bashrc with your shell's rc file):

bash
echo 'export PATH="$AYA_PREFIX/bin:$PATH"' >> ~/.bashrc
+source ~/.bashrc

Use Aya in GitHub Actions

If you want to use Aya in your GitHub Actions workflow, you can use aya-prover/setup-aya like

yaml
- name: Setup Aya
+  uses: aya-prover/setup-aya@latest
+  with:
+    version: 'nightly-build'

The step above will install the latest version of Aya to PATH. You can find the complete example here.

If you already have Java runtime...

Very cool! Now you can try the prebuilt jars (much smaller and platform-independent) or build Aya from source.

We will (hopefully) always be using the latest release of Java, rather than LTS, unless there are breaking changes on the byte code format.

Prebuilt binary

Download the jar version of cli (for using command line) and lsp (for using VSCode) and run it with java --enable-preview -jar [file name].jar.

Build from source

Clone the repository. Then, run build with ./gradlew followed by a task name. If you have problems downloading dependencies (like you are in China), check out how to let gradle use a proxy.

bash
# build Aya and its language server as applications to \`ide-lsp/build/image/current\`
+# the image is usable in Java-free environments 
+./gradlew jlinkAya --rerun-tasks
+# build Aya and its language server as executable
+# jars to <project>/build/libs/<project>-<version>-fat.jar
+./gradlew fatJar
+# build a platform-dependent installer for Aya and its language
+# server with the jlink artifacts to ide-lsp/build/jpackage
+# requires https://wixtoolset.org/releases on Windows
+./gradlew jpackage
+# run tests and generate coverage report to build/reports
+./gradlew testCodeCoverageReport
+# (Windows only) show the coverage report in your default browser
+./gradlew showCCR

Gradle supports short-handed task names, so you can run ./gradlew fJ to invoke fatJar, tCCR to invoke testCodeCoverageReport, and so on.

`,23)]))}const y=s(n,[["render",l]]);export{c as __pageData,y as default}; diff --git a/assets/guide_project-tutorial.md.CaWZTWm8.js b/assets/guide_project-tutorial.md.CaWZTWm8.js new file mode 100644 index 0000000..aff0d69 --- /dev/null +++ b/assets/guide_project-tutorial.md.CaWZTWm8.js @@ -0,0 +1,17 @@ +import{_ as a,c as i,a2 as e,o as n}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Aya Package","description":"","frontmatter":{},"headers":[],"relativePath":"guide/project-tutorial.md","filePath":"guide/project-tutorial.md","lastUpdated":1717298851000}'),t={name:"guide/project-tutorial.md"};function p(l,s,o,h,r,k){return n(),i("div",null,s[0]||(s[0]=[e(`

Aya Package

An Aya project consists of a directory with a aya.json file (project metadata) and a src directory for source code. Here's a sample aya.json:

json
{
+  "ayaVersion": "0.31",
+  // ^ The version of Aya you are using -- for compatibility checks
+  "name": "<project name>",
+  "version": "<project version>",
+  "group": "<project group>",
+  // ^ The group is used to distinguish different projects with the same modules
+
+  "dependency": {
+    "<name of dependency>": {
+      "file": "<directory to your dependency>"
+    },
+    // We plan to support other sources of dependencies,
+    // but we do not have money to
+    // host a package repository for now.
+  }
+}

To build a project, run aya --make <parent dir of aya.json> (incremental). For force-rebuilding, replace --make with --remake. For jar users, run java --enable-preview -jar cli-fatjar.jar --make <parent dir of aya.json>.

`,4)]))}const E=a(t,[["render",p]]);export{c as __pageData,E as default}; diff --git a/assets/guide_project-tutorial.md.CaWZTWm8.lean.js b/assets/guide_project-tutorial.md.CaWZTWm8.lean.js new file mode 100644 index 0000000..aff0d69 --- /dev/null +++ b/assets/guide_project-tutorial.md.CaWZTWm8.lean.js @@ -0,0 +1,17 @@ +import{_ as a,c as i,a2 as e,o as n}from"./chunks/framework.BnE-uSbk.js";const c=JSON.parse('{"title":"Aya Package","description":"","frontmatter":{},"headers":[],"relativePath":"guide/project-tutorial.md","filePath":"guide/project-tutorial.md","lastUpdated":1717298851000}'),t={name:"guide/project-tutorial.md"};function p(l,s,o,h,r,k){return n(),i("div",null,s[0]||(s[0]=[e(`

Aya Package

An Aya project consists of a directory with a aya.json file (project metadata) and a src directory for source code. Here's a sample aya.json:

json
{
+  "ayaVersion": "0.31",
+  // ^ The version of Aya you are using -- for compatibility checks
+  "name": "<project name>",
+  "version": "<project version>",
+  "group": "<project group>",
+  // ^ The group is used to distinguish different projects with the same modules
+
+  "dependency": {
+    "<name of dependency>": {
+      "file": "<directory to your dependency>"
+    },
+    // We plan to support other sources of dependencies,
+    // but we do not have money to
+    // host a package repository for now.
+  }
+}

To build a project, run aya --make <parent dir of aya.json> (incremental). For force-rebuilding, replace --make with --remake. For jar users, run java --enable-preview -jar cli-fatjar.jar --make <parent dir of aya.json>.

`,4)]))}const E=a(t,[["render",p]]);export{c as __pageData,E as default}; diff --git a/assets/guide_prover-tutorial.md.C3VZY-zt.js b/assets/guide_prover-tutorial.md.C3VZY-zt.js new file mode 100644 index 0000000..e6998f4 --- /dev/null +++ b/assets/guide_prover-tutorial.md.C3VZY-zt.js @@ -0,0 +1,98 @@ +import{_ as g,c as w,j as a,a as s,a2 as v,o as I}from"./chunks/framework.BnE-uSbk.js";const T={mounted(){const y=new Map;function p(c){const e=c.querySelectorAll("a[href]");for(const r of e){const n=r.href,i=y.get(n)??new Set;i.add(r),y.set(n,i)}for(const r of e)r.onmouseover=function(){for(const n of y.get(this.href))n.classList.add("hover-highlight")},r.onmouseout=function(){for(const n of y.get(this.href))n.classList.remove("hover-highlight")}}function d(c){return decodeURIComponent(atob(c).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const x=(c=>{const e={};return(...r)=>{const n=JSON.stringify(r);return e[n]=e[n]||c(...r)}})(d);class u{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(r=>r!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let r=this.list.find(n=>n.userCreatedFrom===e);this.dismissIfNotUsed(r)}createHoverFor(e,r,n){let i=this.list.find(o=>o.userCreatedFrom===e);if(i&&i.userClicked)return i;let M=[];const A=this.list.filter(o=>{if(this.allowAutoDismissal(o))return M.push(o),!1;const l=o.userCreatedFrom,f=e;let h=f;for(;h;){if(h===l)return!0;h=h.parentElement}for(h=l;h;){if(h===f)return!0;h=h.parentElement}return!1});M.forEach(o=>this.dismiss(o));let t=document.createElement("div");t.userCreatedFrom=e,t.innerHTML="×"+x(r),t.classList.add("AyaTooltipPopup"),p(t);let b=this;if(t.handleEvent=function(o){if(o.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let l=this.children[0];if(!l)return;let f=this;l.style.visibility="visible",l.addEventListener("click",h=>b.dismiss(f))}o.type==="mouseover"&&(this.userIsThinking=!0),o.type==="mouseout"&&(this.userIsThinking=!1,b.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),n.appendChild(t),t.style.left=`${e.offsetLeft}px`,A.length===0){const o=e.getBoundingClientRect(),l=t.getBoundingClientRect();o.bottom+l.height+30>window.innerHeight?t.style.top=`calc(${e.offsetTop-l.height+8}px - 3em)`:t.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const o=Math.max(...A.map(l=>l.offsetTop+l.offsetHeight));t.style.top=`${o+8}px`}return this.list.push(t),t}}let m=new u;function V(c){return function(){let e=this;const r=e.getAttribute("data-tooltip-text");r&&(c?m.createHoverFor(e,r,document.body):m.fireAutoDismissalFor(e))}}p(document);{let c=document.getElementsByClassName("aya-tooltip");for(let e=0;e {??}")]),s(` +`)],-1),a("p",null,"There is no way to prove it in Martin-Löf type theory or Calculus of Constructions. However, you are very smart and realized you can instead show the following:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-Goal27",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Goal27"},[a("span",{class:"Fn"},"Goal'")]),s(" ("),a("a",{id:"v2100440237",class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Bool"},[a("span",{class:"Data"},"Bool")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-id"},[a("span",{class:"Fn"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-not"},[a("span",{class:"Fn"},"not")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-not"},[a("span",{class:"Fn"},"not")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(")")]),s(` +`)],-1),v('

This is pretty much the same theorem!

Now, suppose we need to show a propositional equality between two records. This means we have to show they're memberwise equal. One record has a member \\ p0not (not p0), and the other has id. This time, you cannot cheat by changing the goal type. You post the question on some mailing list and people are telling you that the alternative version of the theorem you have shown does not imply the original, unless "function extensionality" is a theorem in your type theory.

To have function extensionality as a theorem, you came across two distinct type theories: observational type theory and cubical type theory. Aya chose the latter.

Cubical

Here's the proof of function extensionality in Aya:

',5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-funExt",class:"aya-hover","aya-hover-text":"f = g",href:"#Mian-funExt"},[a("span",{class:"Fn"},"funExt")]),s(" ("),a("a",{id:"v1150058854",class:"aya-hover","aya-hover-text":"A → B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1148255190",class:"aya-hover","aya-hover-text":"A → B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v1346343363",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v1346343363"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v68326648",class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(` + ⇒ `),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v35984028",href:"#v35984028"},[a("span",{class:"LocalVar"},"i")]),s(),a("a",{id:"v541285440",href:"#v541285440"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1346343363"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v541285440"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v35984028"},[a("span",{class:"LocalVar"},"i")])]),s(` +`)],-1),v('

Aya has a "cubical" equality type that is not inductively defined. An equality a = b for a, b : A is really just a function IA (as we can see from the proof construction, for f = g we prove it by a lambda abstraction) where:

  • I is a special type that has two closed instances 0 and 1, and we think of there being a propositional equality between 0 and 1, and there is no pattern matching operation that distinguishes them. So, every function that maps out of I must preserve this judgmental equality.
  • For f : I -> A, the corresponding equality type is f 0 = f 1. Hypothetically, let f be the identity function, and we get a propositional equality between 0 and 1, but for technical reasons we don't talk about equality between 0 and 1 directly.

By this definition, we can "prove" reflexivity by creating a constant function:

',3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-refl",class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(" {"),a("a",{id:"v1930240356",class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1463355115",href:"#v1463355115"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")])]),s(` +`)],-1),v(`

For f = fn i => a, we need to verify if f 0 equals the left-hand side of the equality and f 1 equals the right-hand side, which are both true.

And to show that f = g, it suffices to construct a function q : I -> (A -> B) such that q 0 = f and q 1 = g. This is true for the proof above:

  (fn i a => p a i) 0    β-reduce
+= fn a => p a 0          p a : f a = g a
+= fn a => f a            η-reduce
+= f

We may also prove the action-on-path theorem, commonly known as cong, but renamed to pmap to avoid a potential future naming clash:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pmap",class:"aya-hover","aya-hover-text":"f a = f b",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{id:"v1176164144",class:"aya-hover","aya-hover-text":"A → B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") {"),a("a",{id:"v1323434987",class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v442125849",class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1624972302",class:"aya-hover","aya-hover-text":"a = b",href:"#v1624972302"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(` + ⇒ `),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1201466784",href:"#v1201466784"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1624972302"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1201466784"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,"Checking the above definition is left as an exercise.",-1),a("p",null,[s("However, we cannot yet define transitivity/symmetry of equality because we do not have the traditional elimination rule of the equality type -- the "),a("code",null,"J"),s(" rule. This will need some advanced proving techniques that are beyond the scope of this simple tutorial, so I'll skim them.")],-1),a("p",null,"We may define the type-safe coercion using it, and this will help us prove the two lemmas about equality:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-cast",class:"aya-hover","aya-hover-text":"A → B",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("a",{id:"v1365767549",class:"aya-hover","aya-hover-text":"A = B",href:"#v1365767549"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 1",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(" ⇒ "),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(" 0 1 ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1217207511",href:"#v1217207511"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1365767549"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1217207511"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,[s("Then, from "),a("code",null,"p : a = b"),s(" we construct the equivalence "),a("code",null,"(a = a) = (b = a)"),s(" and coerce along this equivalence:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pinv",class:"aya-hover","aya-hover-text":"b = a",href:"#Mian-pinv"},[a("span",{class:"Fn"},"pinv")]),s(" {"),a("a",{id:"v1042306518",class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1342346098",class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"a = b",href:"#v1358343316"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"b = a",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v1759250827",href:"#v1759250827"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1358343316"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1759250827"},[a("span",{class:"LocalVar"},"i")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")])]),s(` +`)],-1),a("p",null,[s("From "),a("code",null,"q : b = c"),s(" we construct the equivalence "),a("code",null,"(a = b) = (a = c)"),s(" and coerce along this equivalence:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-concat",class:"aya-hover","aya-hover-text":"a = c",href:"#Mian-concat"},[a("span",{class:"Fn"},"concat")]),s(" {"),a("a",{id:"v2107577743",class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1173346575",class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{id:"v1267149311",class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v52514534",class:"aya-hover","aya-hover-text":"a = b",href:"#v52514534"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(") ("),a("a",{id:"v1242027525",class:"aya-hover","aya-hover-text":"b = c",href:"#v1242027525"},[a("span",{class:"LocalVar"},"q")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"a = c",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v951741667",href:"#v951741667"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1242027525"},[a("span",{class:"LocalVar"},"q")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v951741667"},[a("span",{class:"LocalVar"},"i")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"a = b",href:"#v52514534"},[a("span",{class:"LocalVar"},"p")])]),s(` +`)],-1),a("p",null,"Note that at this point you can already do a bunch of familiar proofs about some simple types such as natural numbers or sized vectors. These are left as exercises, and you are encouraged to try yourself if you are not very sure about how it feels to prove things in Aya.",-1),a("h2",{id:"overlapping-and-order-independent-pattern-matching",tabindex:"-1"},[s("Overlapping and Order-independent Pattern Matching "),a("a",{class:"header-anchor",href:"#overlapping-and-order-independent-pattern-matching","aria-label":'Permalink to "Overlapping and Order-independent Pattern Matching"'},"​")],-1),a("p",null,[s("Remember the "),a("code",null,"+-comm"),s(" proof that you need two lemmas? It is standard to define "),a("code",null,"+"),s(" in the following way:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3aNoExport-2b",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v2144838275",class:"aya-hover","aya-hover-text":"Nat",href:"#v2144838275"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2144838275"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1423983012",class:"aya-hover","aya-hover-text":"Nat",href:"#v1423983012"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v746074699",class:"aya-hover","aya-hover-text":"Nat",href:"#v746074699"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1423983012"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v746074699"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),a("p",null,[s("And then you prove that "),a("code",null,"a + 0 = a"),s(" and "),a("code",null,"a + suc b = suc (a + b)"),s(". It is tempting to have "),a("code",null,"| n, 0 => n"),s(" as a computation rule as well, but this is incompatible with the usual semantics of pattern matching, which is compiled to elimination principles during type checking. However, you "),a("em",null,"can"),s(" do that in Aya. You may also add the other lemma as well.")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"overlap"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-2b",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v2112233878",class:"aya-hover","aya-hover-text":"Nat",href:"#v2112233878"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2112233878"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{id:"v372469954",class:"aya-hover","aya-hover-text":"Nat",href:"#v372469954"},[a("span",{class:"LocalVar"},"n")]),s(", 0 ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v372469954"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1371495133",class:"aya-hover","aya-hover-text":"Nat",href:"#v1371495133"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v2030411960",class:"aya-hover","aya-hover-text":"Nat",href:"#v2030411960"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1371495133"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2030411960"},[a("span",{class:"LocalVar"},"n")]),s(`) +| `),a("a",{id:"v899929247",class:"aya-hover","aya-hover-text":"Nat",href:"#v899929247"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v949684105",class:"aya-hover","aya-hover-text":"Nat",href:"#v949684105"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v899929247"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v949684105"},[a("span",{class:"LocalVar"},"n")]),s(`) +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")])]),s(` +`)],-1),a("p",null,[s("This makes all of them definitional equality. So, "),a("code",{class:"Aya"},[a("a",{href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")])]),s(" can be simplified to just one pattern matching:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b-comm",class:"aya-hover","aya-hover-text":"(a + b) = (b + a)",href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")]),s(" ("),a("a",{id:"v412111214",class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v362827515",class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"b = b",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" _ ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"suc (_ + b) = suc (b + _)",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat → Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(_ + b) = (b + _)",href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y0MTI5MjUzMDgiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+Xzwvc3Bhbj48L2E+PC9jb2RlPgo8L3ByZT4K"},"_"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YyMDc5NTY1MjcyIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPmI8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(")")]),s(` +`)],-1),a("p",null,[s("Note that we are using the "),a("code",null,"elim"),s(" keyword, which describes the variables that the function body is pattern matching on.")],-1),a("h2",{id:"heterogeneous-equality",tabindex:"-1"},[s("Heterogeneous equality "),a("a",{class:"header-anchor",href:"#heterogeneous-equality","aria-label":'Permalink to "Heterogeneous equality"'},"​")],-1),a("p",null,"When working with indexed families, you may want to have heterogeneous equality to avoid having mysterious coercions. For example, consider the associativity of sized vector appends. We first need to define sized vectors and the append operation:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v1029472813",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{id:"v282265585",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{id:"v1304117943",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +`),a("span",{class:"Comment"},"// Definitions"),s(` +`),a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Vec",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{id:"v596706728",class:"aya-hover","aya-hover-text":"Nat",href:"#v596706728"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") ("),a("a",{id:"v1070501849",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1070501849"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| 0, `),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v1620823990",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1620823990"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("a",{id:"Mian-Vec-nil",class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+bjwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v1298146757",class:"aya-hover","aya-hover-text":"Nat",href:"#v1298146757"},[a("span",{class:"LocalVar"},"n")])])]),s(", "),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v2133344792",class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-Vec-3a3c",class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1298146757"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")]),s(`) +`),a("span",{class:"Keyword"},"overlap"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-2b2b",class:"aya-hover","aya-hover-text":"Vec (n + m) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(", "),a("a",{id:"v258112787",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v258112787"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v258112787"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v841262455",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v841262455"},[a("span",{class:"LocalVar"},"ys")]),s(", "),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v841262455"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v1044705957",class:"aya-hover","aya-hover-text":"A",href:"#v1044705957"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{id:"v693958407",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v693958407"},[a("span",{class:"LocalVar"},"xs")]),s(", "),a("a",{id:"v288379405",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v288379405"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1044705957"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc (?n A x xs ys n m)) (?A A x xs ys n m)",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v693958407"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n A x xs ys n m + ?m A x xs ys n m) (?A A x xs ys n m)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v288379405"},[a("span",{class:"LocalVar"},"ys")]),s(` +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")])]),s(` +`)],-1),v(`

It is tempting to use the below definition:

overlap def ++-assoc (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  : (xs ++ ys) ++ zs = xs ++ (ys ++ zs) elim xs
+| nil => refl
+| x :< xs => pmap (x :<) (++-assoc xs ys zs)

However, this definition is not well-typed:

  • (xs ++ ys) ++ zs is of type Vec ((n + m) + o) A
  • xs ++ (ys ++ zs) is of type Vec (n + (m + o)) A.

They are not the same! Fortunately, we can prove that they are propositionally equal. We need to show that natural number addition is associative, which is the key lemma of this propositional equality:

`,5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b-assoc",class:"aya-hover","aya-hover-text":"((a + b) + c) = (a + (b + c))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(" {"),a("a",{id:"v1720891078",class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v483797427",class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{id:"v1486726131",class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s("} : ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(") "),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"(b + c) = (b + c)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" _ ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"suc ((_ + b) + c) = suc (_ + (b + c))",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat → Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"((_ + b) + c) = (_ + (b + c))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")])]),s(` +`)],-1),v('

Now we can work on the proof of ++-assoc. Here's a lame definition that is well-typed in pre-cubical type theory, and is also hard to prove -- we cast one side of the equation to be other side. So instead of:

xs ++ (ys ++ zs) = (xs ++ ys) ++ zs

We show:

f (xs ++ (ys ++ zs)) = (xs ++ ys) ++ zs

Where f is a function that changes the type of the vector, implemented using cast. The definition looks like this:

',5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-2b2b-assoc-ty",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3aNoExport-2b2b-assoc-ty"},[a("span",{class:"Fn"},"++-assoc-ty")]),s(" ("),a("a",{id:"v2139788441",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1564698139",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v304715920",class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(`) + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Vec (n + (m + o)) A",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A = Vec (n + (m + o)) A",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v762074108",href:"#v762074108"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v762074108"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"((n + m) + o) = (n + (m + o))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(") (("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(")")]),s(` +`)],-1),v('

It is harder to prove because in the induction step, one need to show that cast (pmap (\\ p0Vec p0 A) +-assoc) is equivalent to the identity function in order to use the induction hypothesis. For the record, here's the proof:

',1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-castRefl",class:"aya-hover","aya-hover-text":"cast refl a = a",href:"#Mian-castRefl"},[a("span",{class:"Fn"},"castRefl")]),s(" ("),a("a",{id:"v1801942731",class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"A = A",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v636782475",href:"#v636782475"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v636782475"},[a("span",{class:"LocalVar"},"i")]),s(" 1 ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1312963234",href:"#v1312963234"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")])]),s(` +`)],-1),a("p",null,"But still, with this lemma it is still hard. Cubical provides a pleasant way of working with heterogeneous equality:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-Path27",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path27"},[a("span",{class:"Fn"},"Path'")]),s(" ("),a("a",{id:"v1513608173",class:"aya-hover","aya-hover-text":"I → Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"ISet",href:"#Mian-I"},[a("span",{class:"Primitive"},"I")]),s(" → "),a("span",{class:"Keyword"},"Type"),s(") ("),a("a",{id:"v652176954",class:"aya-hover","aya-hover-text":"A 0",href:"#v652176954"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" 0) ("),a("a",{id:"v1245065720",class:"aya-hover","aya-hover-text":"A 1",href:"#v1245065720"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" 1) ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I → Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A 0",href:"#v652176954"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A 1",href:"#v1245065720"},[a("span",{class:"LocalVar"},"b")])]),s(` +`)],-1),v("

So if we have X : A = B and a : A, b : B, then Path (\\i => X i) a b expresses the heterogeneous equality between a and b nicely.

We may then use the following type signature:

",2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b2b-assoc-type",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-2b2b-assoc-type"},[a("span",{class:"Fn"},"++-assoc-type")]),s(" ("),a("a",{id:"v765242091",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1117871068",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1151704483",class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(`) + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(" ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v2143139988",href:"#v2143139988"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v2143139988"},[a("span",{class:"LocalVar"},"i")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") (("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s("))")]),s(` +`)],-1),a("p",null,"The proof is omitted (try yourself!).",-1),a("h2",{id:"quotient-inductive-types",tabindex:"-1"},[s("Quotient inductive types "),a("a",{class:"header-anchor",href:"#quotient-inductive-types","aria-label":'Permalink to "Quotient inductive types"'},"​")],-1),a("p",null,"Quotient types are types that equates their instances in a non-trivial way. In Aya, they are defined using the following syntax:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Interval",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(` +| `),a("a",{id:"Mian-Interval-left",class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(` +| `),a("a",{id:"Mian-Interval-right",class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(` +| `),a("a",{id:"Mian-Interval-line",class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")])]),s(` +`)],-1),v('

This is an uninteresting quotient type, that is basically Bool but saying its two values are equal, so it's really just a unit type, with its unique element being the equivalence class of left and right.

If you're familiar with a proof assistant with an intensional equality like Coq/Agda/Lean/etc., you might find this surprising because a unit type shall not have two distinct elements, and an equality shall not be stated between two distinct constructors. How does this work in Aya?

Actually, in these systems, the equality is defined inductively, and it only has one constructor -- refl. This is not how equality is defined in Aya, so we can cook some interesting equality proofs into it, which includes these equality-looking constructors.

  1. The type of line will be translated into IInterval together with the judgmental equality that line 0 is left and line 1 is right, basically a desugaring of the equality with additional features. This makes line a valid constructor in normal type theory: it takes some parameters and returns Interval.
  2. These judgmental equalities need to be preserved by the elimination rule of Interval. Here is an example elimination:
',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-Interval-elim",class:"aya-hover","aya-hover-text":"A",href:"#Mian-3aNoExport-Interval-elim"},[a("span",{class:"Fn"},"Interval-elim")]),s(" {"),a("a",{id:"v1333041165",class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1815556070",class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} {"),a("a",{id:"v708348097",class:"aya-hover","aya-hover-text":"a = b",href:"#v708348097"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s("} ("),a("a",{id:"v1097324923",class:"aya-hover","aya-hover-text":"Interval",href:"#v1097324923"},[a("span",{class:"LocalVar"},"i")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v1097324923"},[a("span",{class:"LocalVar"},"i")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{id:"v313082880",class:"aya-hover","aya-hover-text":"I",href:"#v313082880"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v708348097"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v313082880"},[a("span",{class:"LocalVar"},"j")])]),s(` +`)],-1),v("

Note that the term pmap Interval-elim line, which reduces to p, has type Interval-elim left = Interval-elim right, so we need to check if p 0 equals Interval-elim left, and p 1 equals Interval-elim right. This is a confluence check that ensures the elimination is well-defined.

What's interesting about this type, is that its elimination implies function extensionality:

",2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"private"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-lemma",class:"aya-hover","aya-hover-text":"B",href:"#Mian-lemma"},[a("span",{class:"Fn"},"lemma")]),s(` + (`),a("a",{id:"v1872973138",class:"aya-hover","aya-hover-text":"A → B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1465346452",class:"aya-hover","aya-hover-text":"A → B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v302366050",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v302366050"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v813823788",class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(`) + (`),a("a",{id:"v2129821055",class:"aya-hover","aya-hover-text":"Interval",href:"#v2129821055"},[a("span",{class:"LocalVar"},"i")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(") ("),a("a",{id:"v1225568095",class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v2129821055"},[a("span",{class:"LocalVar"},"i")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{id:"v451460284",class:"aya-hover","aya-hover-text":"I",href:"#v451460284"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v302366050"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v451460284"},[a("span",{class:"LocalVar"},"j")]),s(` + +`),a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-funExt27",class:"aya-hover","aya-hover-text":"f = g",href:"#Mian-3aNoExport-funExt27"},[a("span",{class:"Fn"},"funExt'")]),s(" ("),a("a",{id:"v1558103808",class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1828873985",class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v892965953",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v892965953"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v826865256",class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"lemma f g p left = lemma f g p right",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Interval → A → B",href:"#Mian-lemma"},[a("span",{class:"Fn"},"lemma")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v892965953"},[a("span",{class:"LocalVar"},"p")]),s(") ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1845517769",href:"#v1845517769"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1845517769"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,[s("Note that even though we are using equation combinators like "),a("code",{class:"Aya"},[a("a",{href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")])]),s(" which are implemented using path application and abstraction, it is not considered cheating because these are already theorems in MLTT anyway.")],-1),a("p",null,"We can define other interesting quotients such as a symmetric integer:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Int",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(` +| `),a("a",{id:"Mian-Int-pos",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" | "),a("a",{id:"Mian-Int-neg",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| `),a("a",{id:"Mian-Int-zro",class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(" 0 "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" 0")]),s(` +`)],-1),a("p",null,[s("Some operations on "),a("code",{class:"Aya"},[a("a",{href:"#Mian-Int"},[a("span",{class:"Data"},"Int")])]),s(":")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-succ",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-succ"},[a("span",{class:"Fn"},"succ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{id:"v380812044",class:"aya-hover","aya-hover-text":"Nat",href:"#v380812044"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v380812044"},[a("span",{class:"LocalVar"},"n")]),s(`) +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" 0 ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(` 1 +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v846918683",class:"aya-hover","aya-hover-text":"Nat",href:"#v846918683"},[a("span",{class:"LocalVar"},"n")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v846918683"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(),a("a",{id:"v1823923917",class:"aya-hover","aya-hover-text":"I",href:"#v1823923917"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(` 1 + +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-abs",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-abs"},[a("span",{class:"Fn"},"abs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{id:"v1789268516",class:"aya-hover","aya-hover-text":"Nat",href:"#v1789268516"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1789268516"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{id:"v817686795",class:"aya-hover","aya-hover-text":"Nat",href:"#v817686795"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v817686795"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(" _ ⇒ 0")]),s(` +`)],-1),v('

The succ operator has the first three clauses straightforward, and the last one is a proof of succ (neg 0) equals succ (pos 0), as we should preserve the judgmental equality in the type of zro. We need to do the same for abs.

',1)]))}const z=g(T,[["render",N]]);export{B as __pageData,z as default}; diff --git a/assets/guide_prover-tutorial.md.C3VZY-zt.lean.js b/assets/guide_prover-tutorial.md.C3VZY-zt.lean.js new file mode 100644 index 0000000..e6998f4 --- /dev/null +++ b/assets/guide_prover-tutorial.md.C3VZY-zt.lean.js @@ -0,0 +1,98 @@ +import{_ as g,c as w,j as a,a as s,a2 as v,o as I}from"./chunks/framework.BnE-uSbk.js";const T={mounted(){const y=new Map;function p(c){const e=c.querySelectorAll("a[href]");for(const r of e){const n=r.href,i=y.get(n)??new Set;i.add(r),y.set(n,i)}for(const r of e)r.onmouseover=function(){for(const n of y.get(this.href))n.classList.add("hover-highlight")},r.onmouseout=function(){for(const n of y.get(this.href))n.classList.remove("hover-highlight")}}function d(c){return decodeURIComponent(atob(c).split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join(""))}const x=(c=>{const e={};return(...r)=>{const n=JSON.stringify(r);return e[n]=e[n]||c(...r)}})(d);class u{constructor(){this.list=[]}dismiss(e){e&&(e.remove(),this.list=this.list.filter(r=>r!==e))}dismissIfNotUsed(e){e&&(e.markedForDismissal=!0,setTimeout(()=>{!e.userIsThinking&&this.allowAutoDismissal(e)&&this.dismiss(e)},1e3))}allowAutoDismissal(e){return e.markedForDismissal&&!e.userClicked}fireAutoDismissalFor(e){let r=this.list.find(n=>n.userCreatedFrom===e);this.dismissIfNotUsed(r)}createHoverFor(e,r,n){let i=this.list.find(o=>o.userCreatedFrom===e);if(i&&i.userClicked)return i;let M=[];const A=this.list.filter(o=>{if(this.allowAutoDismissal(o))return M.push(o),!1;const l=o.userCreatedFrom,f=e;let h=f;for(;h;){if(h===l)return!0;h=h.parentElement}for(h=l;h;){if(h===f)return!0;h=h.parentElement}return!1});M.forEach(o=>this.dismiss(o));let t=document.createElement("div");t.userCreatedFrom=e,t.innerHTML="×"+x(r),t.classList.add("AyaTooltipPopup"),p(t);let b=this;if(t.handleEvent=function(o){if(o.type==="click"){this.userClicked=!0,this.markedForDismissal=!1;let l=this.children[0];if(!l)return;let f=this;l.style.visibility="visible",l.addEventListener("click",h=>b.dismiss(f))}o.type==="mouseover"&&(this.userIsThinking=!0),o.type==="mouseout"&&(this.userIsThinking=!1,b.dismissIfNotUsed(this))},t.addEventListener("click",t),t.addEventListener("mouseover",t),t.addEventListener("mouseout",t),n.appendChild(t),t.style.left=`${e.offsetLeft}px`,A.length===0){const o=e.getBoundingClientRect(),l=t.getBoundingClientRect();o.bottom+l.height+30>window.innerHeight?t.style.top=`calc(${e.offsetTop-l.height+8}px - 3em)`:t.style.top=`${e.offsetTop+e.offsetHeight+8}px`}else{const o=Math.max(...A.map(l=>l.offsetTop+l.offsetHeight));t.style.top=`${o+8}px`}return this.list.push(t),t}}let m=new u;function V(c){return function(){let e=this;const r=e.getAttribute("data-tooltip-text");r&&(c?m.createHoverFor(e,r,document.body):m.fireAutoDismissalFor(e))}}p(document);{let c=document.getElementsByClassName("aya-tooltip");for(let e=0;e {??}")]),s(` +`)],-1),a("p",null,"There is no way to prove it in Martin-Löf type theory or Calculus of Constructions. However, you are very smart and realized you can instead show the following:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-Goal27",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Goal27"},[a("span",{class:"Fn"},"Goal'")]),s(" ("),a("a",{id:"v2100440237",class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Bool"},[a("span",{class:"Data"},"Bool")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-id"},[a("span",{class:"Fn"},"id")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-not"},[a("span",{class:"Fn"},"not")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#Mian-not"},[a("span",{class:"Fn"},"not")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Bool",href:"#v2100440237"},[a("span",{class:"LocalVar"},"x")]),s(")")]),s(` +`)],-1),v('

This is pretty much the same theorem!

Now, suppose we need to show a propositional equality between two records. This means we have to show they're memberwise equal. One record has a member \\ p0not (not p0), and the other has id. This time, you cannot cheat by changing the goal type. You post the question on some mailing list and people are telling you that the alternative version of the theorem you have shown does not imply the original, unless "function extensionality" is a theorem in your type theory.

To have function extensionality as a theorem, you came across two distinct type theories: observational type theory and cubical type theory. Aya chose the latter.

Cubical

Here's the proof of function extensionality in Aya:

',5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-funExt",class:"aya-hover","aya-hover-text":"f = g",href:"#Mian-funExt"},[a("span",{class:"Fn"},"funExt")]),s(" ("),a("a",{id:"v1150058854",class:"aya-hover","aya-hover-text":"A → B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1148255190",class:"aya-hover","aya-hover-text":"A → B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v1346343363",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v1346343363"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v68326648",class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v68326648"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1150058854"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1148255190"},[a("span",{class:"LocalVar"},"g")]),s(` + ⇒ `),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v35984028",href:"#v35984028"},[a("span",{class:"LocalVar"},"i")]),s(),a("a",{id:"v541285440",href:"#v541285440"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1346343363"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v541285440"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v35984028"},[a("span",{class:"LocalVar"},"i")])]),s(` +`)],-1),v('

Aya has a "cubical" equality type that is not inductively defined. An equality a = b for a, b : A is really just a function IA (as we can see from the proof construction, for f = g we prove it by a lambda abstraction) where:

  • I is a special type that has two closed instances 0 and 1, and we think of there being a propositional equality between 0 and 1, and there is no pattern matching operation that distinguishes them. So, every function that maps out of I must preserve this judgmental equality.
  • For f : I -> A, the corresponding equality type is f 0 = f 1. Hypothetically, let f be the identity function, and we get a propositional equality between 0 and 1, but for technical reasons we don't talk about equality between 0 and 1 directly.

By this definition, we can "prove" reflexivity by creating a constant function:

',3),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-refl",class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(" {"),a("a",{id:"v1930240356",class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1463355115",href:"#v1463355115"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1930240356"},[a("span",{class:"LocalVar"},"a")])]),s(` +`)],-1),v(`

For f = fn i => a, we need to verify if f 0 equals the left-hand side of the equality and f 1 equals the right-hand side, which are both true.

And to show that f = g, it suffices to construct a function q : I -> (A -> B) such that q 0 = f and q 1 = g. This is true for the proof above:

  (fn i a => p a i) 0    β-reduce
+= fn a => p a 0          p a : f a = g a
+= fn a => f a            η-reduce
+= f

We may also prove the action-on-path theorem, commonly known as cong, but renamed to pmap to avoid a potential future naming clash:

`,4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pmap",class:"aya-hover","aya-hover-text":"f a = f b",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{id:"v1176164144",class:"aya-hover","aya-hover-text":"A → B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") {"),a("a",{id:"v1323434987",class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v442125849",class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1624972302",class:"aya-hover","aya-hover-text":"a = b",href:"#v1624972302"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1323434987"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v442125849"},[a("span",{class:"LocalVar"},"b")]),s(` + ⇒ `),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1201466784",href:"#v1201466784"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1176164144"},[a("span",{class:"LocalVar"},"f")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1624972302"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1201466784"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,"Checking the above definition is left as an exercise.",-1),a("p",null,[s("However, we cannot yet define transitivity/symmetry of equality because we do not have the traditional elimination rule of the equality type -- the "),a("code",null,"J"),s(" rule. This will need some advanced proving techniques that are beyond the scope of this simple tutorial, so I'll skim them.")],-1),a("p",null,"We may define the type-safe coercion using it, and this will help us prove the two lemmas about equality:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-cast",class:"aya-hover","aya-hover-text":"A → B",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("a",{id:"v1365767549",class:"aya-hover","aya-hover-text":"A = B",href:"#v1365767549"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 1",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(" ⇒ "),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(" 0 1 ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1217207511",href:"#v1217207511"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1365767549"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1217207511"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,[s("Then, from "),a("code",null,"p : a = b"),s(" we construct the equivalence "),a("code",null,"(a = a) = (b = a)"),s(" and coerce along this equivalence:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-pinv",class:"aya-hover","aya-hover-text":"b = a",href:"#Mian-pinv"},[a("span",{class:"Fn"},"pinv")]),s(" {"),a("a",{id:"v1042306518",class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1342346098",class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v1358343316",class:"aya-hover","aya-hover-text":"a = b",href:"#v1358343316"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1342346098"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"b = a",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v1759250827",href:"#v1759250827"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1358343316"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1759250827"},[a("span",{class:"LocalVar"},"i")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1042306518"},[a("span",{class:"LocalVar"},"a")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"a = a",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")])]),s(` +`)],-1),a("p",null,[s("From "),a("code",null,"q : b = c"),s(" we construct the equivalence "),a("code",null,"(a = b) = (a = c)"),s(" and coerce along this equivalence:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-concat",class:"aya-hover","aya-hover-text":"a = c",href:"#Mian-concat"},[a("span",{class:"Fn"},"concat")]),s(" {"),a("a",{id:"v2107577743",class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1173346575",class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{id:"v1267149311",class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} ("),a("a",{id:"v52514534",class:"aya-hover","aya-hover-text":"a = b",href:"#v52514534"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(") ("),a("a",{id:"v1242027525",class:"aya-hover","aya-hover-text":"b = c",href:"#v1242027525"},[a("span",{class:"LocalVar"},"q")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1173346575"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1267149311"},[a("span",{class:"LocalVar"},"c")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"a = c",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("span",{class:"Keyword"},"\\"),a("a",{id:"v951741667",href:"#v951741667"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v2107577743"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1242027525"},[a("span",{class:"LocalVar"},"q")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v951741667"},[a("span",{class:"LocalVar"},"i")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"a = b",href:"#v52514534"},[a("span",{class:"LocalVar"},"p")])]),s(` +`)],-1),a("p",null,"Note that at this point you can already do a bunch of familiar proofs about some simple types such as natural numbers or sized vectors. These are left as exercises, and you are encouraged to try yourself if you are not very sure about how it feels to prove things in Aya.",-1),a("h2",{id:"overlapping-and-order-independent-pattern-matching",tabindex:"-1"},[s("Overlapping and Order-independent Pattern Matching "),a("a",{class:"header-anchor",href:"#overlapping-and-order-independent-pattern-matching","aria-label":'Permalink to "Overlapping and Order-independent Pattern Matching"'},"​")],-1),a("p",null,[s("Remember the "),a("code",null,"+-comm"),s(" proof that you need two lemmas? It is standard to define "),a("code",null,"+"),s(" in the following way:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-3aNoExport-2b",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v2144838275",class:"aya-hover","aya-hover-text":"Nat",href:"#v2144838275"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2144838275"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1423983012",class:"aya-hover","aya-hover-text":"Nat",href:"#v1423983012"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v746074699",class:"aya-hover","aya-hover-text":"Nat",href:"#v746074699"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1423983012"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-3aNoExport-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v746074699"},[a("span",{class:"LocalVar"},"n")]),s(")")]),s(` +`)],-1),a("p",null,[s("And then you prove that "),a("code",null,"a + 0 = a"),s(" and "),a("code",null,"a + suc b = suc (a + b)"),s(". It is tempting to have "),a("code",null,"| n, 0 => n"),s(" as a computation rule as well, but this is incompatible with the usual semantics of pattern matching, which is compiled to elimination principles during type checking. However, you "),a("em",null,"can"),s(" do that in Aya. You may also add the other lemma as well.")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"overlap"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infix"),s(),a("a",{id:"Mian-2b",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| 0, `),a("a",{id:"v2112233878",class:"aya-hover","aya-hover-text":"Nat",href:"#v2112233878"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2112233878"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{id:"v372469954",class:"aya-hover","aya-hover-text":"Nat",href:"#v372469954"},[a("span",{class:"LocalVar"},"n")]),s(", 0 ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v372469954"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v1371495133",class:"aya-hover","aya-hover-text":"Nat",href:"#v1371495133"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{id:"v2030411960",class:"aya-hover","aya-hover-text":"Nat",href:"#v2030411960"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1371495133"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v2030411960"},[a("span",{class:"LocalVar"},"n")]),s(`) +| `),a("a",{id:"v899929247",class:"aya-hover","aya-hover-text":"Nat",href:"#v899929247"},[a("span",{class:"LocalVar"},"m")]),s(", "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v949684105",class:"aya-hover","aya-hover-text":"Nat",href:"#v949684105"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v899929247"},[a("span",{class:"LocalVar"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v949684105"},[a("span",{class:"LocalVar"},"n")]),s(`) +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")])]),s(` +`)],-1),a("p",null,[s("This makes all of them definitional equality. So, "),a("code",{class:"Aya"},[a("a",{href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")])]),s(" can be simplified to just one pattern matching:")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b-comm",class:"aya-hover","aya-hover-text":"(a + b) = (b + a)",href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")]),s(" ("),a("a",{id:"v412111214",class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v362827515",class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v362827515"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v412111214"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"b = b",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" _ ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"suc (_ + b) = suc (b + _)",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat → Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"(_ + b) = (b + _)",href:"#Mian-2b-comm"},[a("span",{class:"Fn"},"+-comm")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3Y0MTI5MjUzMDgiPjxzcGFuIGNsYXNzPSJMb2NhbFZhciI+Xzwvc3Bhbj48L2E+PC9jb2RlPgo8L3ByZT4K"},"_"),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+PGEgaHJlZj0iI3YyMDc5NTY1MjcyIj48c3BhbiBjbGFzcz0iTG9jYWxWYXIiPmI8L3NwYW4+PC9hPjwvY29kZT4KPC9wcmU+Cg=="},"_"),s(")")]),s(` +`)],-1),a("p",null,[s("Note that we are using the "),a("code",null,"elim"),s(" keyword, which describes the variables that the function body is pattern matching on.")],-1),a("h2",{id:"heterogeneous-equality",tabindex:"-1"},[s("Heterogeneous equality "),a("a",{class:"header-anchor",href:"#heterogeneous-equality","aria-label":'Permalink to "Heterogeneous equality"'},"​")],-1),a("p",null,"When working with indexed families, you may want to have heterogeneous equality to avoid having mysterious coercions. For example, consider the associativity of sized vector appends. We first need to define sized vectors and the append operation:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"variable"),s(),a("a",{id:"v1029472813",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{id:"v282265585",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{id:"v1304117943",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +`),a("span",{class:"Comment"},"// Definitions"),s(` +`),a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Vec",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{id:"v596706728",class:"aya-hover","aya-hover-text":"Nat",href:"#v596706728"},[a("span",{class:"LocalVar"},"n")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(") ("),a("a",{id:"v1070501849",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1070501849"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("span",{class:"Keyword"},"Type"),s(`) +| 0, `),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v1620823990",class:"aya-hover","aya-hover-text":"Type 0",href:"#v1620823990"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("a",{id:"Mian-Vec-nil",class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+bjwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v1298146757",class:"aya-hover","aya-hover-text":"Nat",href:"#v1298146757"},[a("span",{class:"LocalVar"},"n")])])]),s(", "),a("span",{class:"aya-tooltip","data-tooltip-text":"PHByZSBjbGFzcz0iQXlhIj4KPGNvZGU+V2FybmluZzogVGhlIG5hbWUgPGNvZGUgY2xhc3M9IkF5YSI+QTwvY29kZT4gc2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIGRlZmluaXRpb24gZnJvbSBvdXRlciBzY29wZTwvY29kZT4KPC9wcmU+Cg=="},[a("span",{class:"Warning"},[a("a",{id:"v2133344792",class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")])])]),s(" ⇒ "),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-Vec-3a3c",class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1298146757"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v2133344792"},[a("span",{class:"LocalVar"},"A")]),s(`) +`),a("span",{class:"Keyword"},"overlap"),s(),a("span",{class:"Keyword"},"def"),s(),a("span",{class:"Keyword"},"infixr"),s(),a("a",{id:"Mian-2b2b",class:"aya-hover","aya-hover-text":"Vec (n + m) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(", "),a("a",{id:"v258112787",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v258112787"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v258112787"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v841262455",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v841262455"},[a("span",{class:"LocalVar"},"ys")]),s(", "),a("a",{class:"aya-hover","aya-hover-text":"Vec 0 A",href:"#Mian-Vec-nil"},[a("span",{class:"Constructor"},"nil")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v841262455"},[a("span",{class:"LocalVar"},"ys")]),s(` +| `),a("a",{id:"v1044705957",class:"aya-hover","aya-hover-text":"A",href:"#v1044705957"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{id:"v693958407",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v693958407"},[a("span",{class:"LocalVar"},"xs")]),s(", "),a("a",{id:"v288379405",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v288379405"},[a("span",{class:"LocalVar"},"ys")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1044705957"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc (?n A x xs ys n m)) (?A A x xs ys n m)",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v693958407"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n A x xs ys n m + ?m A x xs ys n m) (?A A x xs ys n m)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v288379405"},[a("span",{class:"LocalVar"},"ys")]),s(` +`),a("span",{class:"Keyword"},"tighter"),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (suc n) A",href:"#Mian-Vec-3a3c"},[a("span",{class:"Constructor"},":<")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")])]),s(` +`)],-1),v(`

It is tempting to use the below definition:

overlap def ++-assoc (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  : (xs ++ ys) ++ zs = xs ++ (ys ++ zs) elim xs
+| nil => refl
+| x :< xs => pmap (x :<) (++-assoc xs ys zs)

However, this definition is not well-typed:

  • (xs ++ ys) ++ zs is of type Vec ((n + m) + o) A
  • xs ++ (ys ++ zs) is of type Vec (n + (m + o)) A.

They are not the same! Fortunately, we can prove that they are propositionally equal. We need to show that natural number addition is associative, which is the key lemma of this propositional equality:

`,5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b-assoc",class:"aya-hover","aya-hover-text":"((a + b) + c) = (a + (b + c))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(" {"),a("a",{id:"v1720891078",class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v483797427",class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{id:"v1486726131",class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s("} : ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v483797427"},[a("span",{class:"LocalVar"},"b")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b"},[a("span",{class:"Fn"},"+")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1486726131"},[a("span",{class:"LocalVar"},"c")]),s(") "),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v1720891078"},[a("span",{class:"LocalVar"},"a")]),s(` +| 0 ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"(b + c) = (b + c)",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(" _ ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"suc ((_ + b) + c) = suc (_ + (b + c))",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat → Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"((_ + b) + c) = (_ + (b + c))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")])]),s(` +`)],-1),v('

Now we can work on the proof of ++-assoc. Here's a lame definition that is well-typed in pre-cubical type theory, and is also hard to prove -- we cast one side of the equation to be other side. So instead of:

xs ++ (ys ++ zs) = (xs ++ ys) ++ zs

We show:

f (xs ++ (ys ++ zs)) = (xs ++ ys) ++ zs

Where f is a function that changes the type of the vector, implemented using cast. The definition looks like this:

',5),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-2b2b-assoc-ty",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3aNoExport-2b2b-assoc-ty"},[a("span",{class:"Fn"},"++-assoc-ty")]),s(" ("),a("a",{id:"v2139788441",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1564698139",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v304715920",class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(`) + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Vec (n + (m + o)) A",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A = Vec (n + (m + o)) A",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v762074108",href:"#v762074108"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v762074108"},[a("span",{class:"LocalVar"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"((n + m) + o) = (n + (m + o))",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(") (("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v2139788441"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1564698139"},[a("span",{class:"LocalVar"},"ys")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v304715920"},[a("span",{class:"LocalVar"},"zs")]),s(")")]),s(` +`)],-1),v('

It is harder to prove because in the induction step, one need to show that cast (pmap (\\ p0Vec p0 A) +-assoc) is equivalent to the identity function in order to use the induction hypothesis. For the record, here's the proof:

',1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-castRefl",class:"aya-hover","aya-hover-text":"cast refl a = a",href:"#Mian-castRefl"},[a("span",{class:"Fn"},"castRefl")]),s(" ("),a("a",{id:"v1801942731",class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#Mian-cast"},[a("span",{class:"Fn"},"cast")]),s(),a("span",{class:"Keyword"},"↑"),s(),a("a",{class:"aya-hover","aya-hover-text":"A = A",href:"#Mian-refl"},[a("span",{class:"Fn"},"refl")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")]),s(" ⇒ "),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v636782475",href:"#v636782475"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#Mian-coe"},[a("span",{class:"Primitive"},"coe")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v636782475"},[a("span",{class:"LocalVar"},"i")]),s(" 1 ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1312963234",href:"#v1312963234"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1801942731"},[a("span",{class:"LocalVar"},"a")])]),s(` +`)],-1),a("p",null,"But still, with this lemma it is still hard. Cubical provides a pleasant way of working with heterogeneous equality:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-Path27",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path27"},[a("span",{class:"Fn"},"Path'")]),s(" ("),a("a",{id:"v1513608173",class:"aya-hover","aya-hover-text":"I → Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"ISet",href:"#Mian-I"},[a("span",{class:"Primitive"},"I")]),s(" → "),a("span",{class:"Keyword"},"Type"),s(") ("),a("a",{id:"v652176954",class:"aya-hover","aya-hover-text":"A 0",href:"#v652176954"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" 0) ("),a("a",{id:"v1245065720",class:"aya-hover","aya-hover-text":"A 1",href:"#v1245065720"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(" 1) ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I → Type 0",href:"#v1513608173"},[a("span",{class:"LocalVar"},"A")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A 0",href:"#v652176954"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A 1",href:"#v1245065720"},[a("span",{class:"LocalVar"},"b")])]),s(` +`)],-1),v("

So if we have X : A = B and a : A, b : B, then Path (\\i => X i) a b expresses the heterogeneous equality between a and b nicely.

We may then use the following type signature:

",2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-2b2b-assoc-type",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-2b2b-assoc-type"},[a("span",{class:"Fn"},"++-assoc-type")]),s(" ("),a("a",{id:"v765242091",class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1029472813"},[a("span",{class:"Generalized"},"n")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1117871068",class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v282265585"},[a("span",{class:"Generalized"},"m")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") ("),a("a",{id:"v1151704483",class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1304117943"},[a("span",{class:"Generalized"},"o")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(`) + ⇒ `),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Path"},[a("span",{class:"Primitive"},"Path")]),s(" ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v2143139988",href:"#v2143139988"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Vec"},[a("span",{class:"Data"},"Vec")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-2b-assoc"},[a("span",{class:"Fn"},"+-assoc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v2143139988"},[a("span",{class:"LocalVar"},"i")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") (("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(") "),a("a",{class:"aya-hover","aya-hover-text":"Vec ((n + m) + o) A",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s(") ("),a("a",{class:"aya-hover","aya-hover-text":"Vec n A",href:"#v765242091"},[a("span",{class:"LocalVar"},"xs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Vec m A",href:"#v1117871068"},[a("span",{class:"LocalVar"},"ys")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec (?n n A m o xs ys zs + ?m n A m o xs ys zs) (?A n A m o xs ys zs)",href:"#Mian-2b2b"},[a("span",{class:"Fn"},"++")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Vec o A",href:"#v1151704483"},[a("span",{class:"LocalVar"},"zs")]),s("))")]),s(` +`)],-1),a("p",null,"The proof is omitted (try yourself!).",-1),a("h2",{id:"quotient-inductive-types",tabindex:"-1"},[s("Quotient inductive types "),a("a",{class:"header-anchor",href:"#quotient-inductive-types","aria-label":'Permalink to "Quotient inductive types"'},"​")],-1),a("p",null,"Quotient types are types that equates their instances in a non-trivial way. In Aya, they are defined using the following syntax:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Interval",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(` +| `),a("a",{id:"Mian-Interval-left",class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(` +| `),a("a",{id:"Mian-Interval-right",class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(` +| `),a("a",{id:"Mian-Interval-line",class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")])]),s(` +`)],-1),v('

This is an uninteresting quotient type, that is basically Bool but saying its two values are equal, so it's really just a unit type, with its unique element being the equivalence class of left and right.

If you're familiar with a proof assistant with an intensional equality like Coq/Agda/Lean/etc., you might find this surprising because a unit type shall not have two distinct elements, and an equality shall not be stated between two distinct constructors. How does this work in Aya?

Actually, in these systems, the equality is defined inductively, and it only has one constructor -- refl. This is not how equality is defined in Aya, so we can cook some interesting equality proofs into it, which includes these equality-looking constructors.

  1. The type of line will be translated into IInterval together with the judgmental equality that line 0 is left and line 1 is right, basically a desugaring of the equality with additional features. This makes line a valid constructor in normal type theory: it takes some parameters and returns Interval.
  2. These judgmental equalities need to be preserved by the elimination rule of Interval. Here is an example elimination:
',4),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-Interval-elim",class:"aya-hover","aya-hover-text":"A",href:"#Mian-3aNoExport-Interval-elim"},[a("span",{class:"Fn"},"Interval-elim")]),s(" {"),a("a",{id:"v1333041165",class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{id:"v1815556070",class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s("} {"),a("a",{id:"v708348097",class:"aya-hover","aya-hover-text":"a = b",href:"#v708348097"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s("} ("),a("a",{id:"v1097324923",class:"aya-hover","aya-hover-text":"Interval",href:"#v1097324923"},[a("span",{class:"LocalVar"},"i")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v1097324923"},[a("span",{class:"LocalVar"},"i")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1333041165"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1815556070"},[a("span",{class:"LocalVar"},"b")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{id:"v313082880",class:"aya-hover","aya-hover-text":"I",href:"#v313082880"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v708348097"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v313082880"},[a("span",{class:"LocalVar"},"j")])]),s(` +`)],-1),v("

Note that the term pmap Interval-elim line, which reduces to p, has type Interval-elim left = Interval-elim right, so we need to check if p 0 equals Interval-elim left, and p 1 equals Interval-elim right. This is a confluence check that ensures the elimination is well-defined.

What's interesting about this type, is that its elimination implies function extensionality:

",2),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"private"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-lemma",class:"aya-hover","aya-hover-text":"B",href:"#Mian-lemma"},[a("span",{class:"Fn"},"lemma")]),s(` + (`),a("a",{id:"v1872973138",class:"aya-hover","aya-hover-text":"A → B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1465346452",class:"aya-hover","aya-hover-text":"A → B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v302366050",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v302366050"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v813823788",class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v813823788"},[a("span",{class:"LocalVar"},"x")]),s(`) + (`),a("a",{id:"v2129821055",class:"aya-hover","aya-hover-text":"Interval",href:"#v2129821055"},[a("span",{class:"LocalVar"},"i")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Interval"},[a("span",{class:"Data"},"Interval")]),s(") ("),a("a",{id:"v1225568095",class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(),a("span",{class:"Keyword"},"elim"),s(),a("a",{href:"#v2129821055"},[a("span",{class:"LocalVar"},"i")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-left"},[a("span",{class:"Constructor"},"left")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1872973138"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-right"},[a("span",{class:"Constructor"},"right")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1465346452"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"left = right",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{id:"v451460284",class:"aya-hover","aya-hover-text":"I",href:"#v451460284"},[a("span",{class:"LocalVar"},"j")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v302366050"},[a("span",{class:"LocalVar"},"p")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v1225568095"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v451460284"},[a("span",{class:"LocalVar"},"j")]),s(` + +`),a("span",{class:"Keyword"},"example"),s(),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-3aNoExport-funExt27",class:"aya-hover","aya-hover-text":"f = g",href:"#Mian-3aNoExport-funExt27"},[a("span",{class:"Fn"},"funExt'")]),s(" ("),a("a",{id:"v1558103808",class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{id:"v1828873985",class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v370370379"},[a("span",{class:"Generalized"},"A")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#v1068586139"},[a("span",{class:"Generalized"},"B")]),s(") ("),a("a",{id:"v892965953",class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v892965953"},[a("span",{class:"LocalVar"},"p")]),s(" : "),a("span",{class:"Keyword"},"∀"),s(),a("a",{id:"v826865256",class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(" → "),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A",href:"#v826865256"},[a("span",{class:"LocalVar"},"a")]),s(") : "),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(` ⇒ + `),a("a",{class:"aya-hover","aya-hover-text":"lemma f g p left = lemma f g p right",href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Interval → A → B",href:"#Mian-lemma"},[a("span",{class:"Fn"},"lemma")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1558103808"},[a("span",{class:"LocalVar"},"f")]),s(),a("a",{class:"aya-hover","aya-hover-text":"A → B",href:"#v1828873985"},[a("span",{class:"LocalVar"},"g")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Fn (B : A) → f B = g B",href:"#v892965953"},[a("span",{class:"LocalVar"},"p")]),s(") ("),a("span",{class:"Keyword"},"fn"),s(),a("a",{id:"v1845517769",href:"#v1845517769"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Interval",href:"#Mian-Interval-line"},[a("span",{class:"Constructor"},"line")]),s(),a("a",{class:"aya-hover","aya-hover-text":"I",href:"#v1845517769"},[a("span",{class:"LocalVar"},"i")]),s(")")]),s(` +`)],-1),a("p",null,[s("Note that even though we are using equation combinators like "),a("code",{class:"Aya"},[a("a",{href:"#Mian-pmap"},[a("span",{class:"Fn"},"pmap")])]),s(" which are implemented using path application and abstraction, it is not considered cheating because these are already theorems in MLTT anyway.")],-1),a("p",null,"We can define other interesting quotients such as a symmetric integer:",-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"open"),s(),a("span",{class:"Keyword"},"inductive"),s(),a("a",{id:"Mian-Int",class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(` +| `),a("a",{id:"Mian-Int-pos",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(" | "),a("a",{id:"Mian-Int-neg",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| `),a("a",{id:"Mian-Int-zro",class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(" 0 "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-3d"},[a("span",{class:"Fn"},"=")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" 0")]),s(` +`)],-1),a("p",null,[s("Some operations on "),a("code",{class:"Aya"},[a("a",{href:"#Mian-Int"},[a("span",{class:"Data"},"Int")])]),s(":")],-1),a("pre",{class:"Aya"},[s(""),a("code",null,[a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-succ",class:"aya-hover","aya-hover-text":"Int",href:"#Mian-succ"},[a("span",{class:"Fn"},"succ")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{id:"v380812044",class:"aya-hover","aya-hover-text":"Nat",href:"#v380812044"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v380812044"},[a("span",{class:"LocalVar"},"n")]),s(`) +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" 0 ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(` 1 +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(" ("),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-Nat-suc"},[a("span",{class:"Constructor"},"suc")]),s(),a("a",{id:"v846918683",class:"aya-hover","aya-hover-text":"Nat",href:"#v846918683"},[a("span",{class:"LocalVar"},"n")]),s(") ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v846918683"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(),a("a",{id:"v1823923917",class:"aya-hover","aya-hover-text":"I",href:"#v1823923917"},[a("span",{class:"LocalVar"},"i")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(` 1 + +`),a("span",{class:"Keyword"},"def"),s(),a("a",{id:"Mian-abs",class:"aya-hover","aya-hover-text":"Nat",href:"#Mian-abs"},[a("span",{class:"Fn"},"abs")]),s(),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Int"},[a("span",{class:"Data"},"Int")]),s(" : "),a("a",{class:"aya-hover","aya-hover-text":"Type 0",href:"#Mian-Nat"},[a("span",{class:"Data"},"Nat")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-pos"},[a("span",{class:"Constructor"},"pos")]),s(),a("a",{id:"v1789268516",class:"aya-hover","aya-hover-text":"Nat",href:"#v1789268516"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v1789268516"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"Int",href:"#Mian-Int-neg"},[a("span",{class:"Constructor"},"neg")]),s(),a("a",{id:"v817686795",class:"aya-hover","aya-hover-text":"Nat",href:"#v817686795"},[a("span",{class:"LocalVar"},"n")]),s(" ⇒ "),a("a",{class:"aya-hover","aya-hover-text":"Nat",href:"#v817686795"},[a("span",{class:"LocalVar"},"n")]),s(` +| `),a("a",{class:"aya-hover","aya-hover-text":"pos 0 = neg 0",href:"#Mian-Int-zro"},[a("span",{class:"Constructor"},"zro")]),s(" _ ⇒ 0")]),s(` +`)],-1),v('

The succ operator has the first three clauses straightforward, and the last one is a proof of succ (neg 0) equals succ (pos 0), as we should preserve the judgmental equality in the type of zro. We need to do the same for abs.

',1)]))}const z=g(T,[["render",N]]);export{B as __pageData,z as default}; diff --git a/assets/guide_readings.md.DU4j-4Ox.js b/assets/guide_readings.md.DU4j-4Ox.js new file mode 100644 index 0000000..c913deb --- /dev/null +++ b/assets/guide_readings.md.DU4j-4Ox.js @@ -0,0 +1 @@ +import{d as k,c as v,j as i,a as s,G as y,k as w,B as C,o as P}from"./chunks/framework.BnE-uSbk.js";const T={name:"Conor McBride",link:"http://strictlypositive.org"},o={name:"Thierry Coquand",link:"https://www.cse.chalmers.se/~coquand"},S={name:"Cyril Cohen",link:"https://perso.crans.org/cohen"},t={name:"András Kovács",link:"https://andraskovacs.github.io"},p={name:"Ambrus Kaposi",link:"https://akaposi.github.io"},r={name:"Simon Huber",link:"https://simhu.github.io"},A={name:"Guillaume Brunerie",link:"https://guillaumebrunerie.github.io"},a={name:"Andreas Abel",link:"https://www.cse.chalmers.se/~abela"},d={name:"Andrea Vezzosi",link:"https://saizan.github.io"},l={name:"Anders Mörtberg",link:"https://staff.math.su.se/anders.mortberg"},h={name:"Jesper Cockx",link:"https://jesper.sikanda.be"},I={name:"Robert Harper",link:"https://www.cs.cmu.edu/~rwh"},n={name:"Carlo Angiuli",link:"https://carloangiuli.com"},c={name:"Daniel Gratzer",link:"https://www.danielgratzer.com"},u={name:"Jon Sterling",link:"https://www.jonmsterling.com"},m={name:"Loïc Pujet",link:"https://pujet.fr"},g={name:"Nicolas Tabareau",link:"https://tabareau.fr"},f={name:"Kuen-Bang Hou (Favonia)",link:"https://favonia.org"},L=[{type:"General Type Theory",items:[{title:"Observational Equality: Now for Good",venue:"POPL 2022",authors:[m,g],links:[["doi","10.1145/3498693"],["conference","https://dl.acm.org/doi/pdf/10.1145/3498693"]]},{title:"Copatterns: programming infinite structures by observations",authors:[a,{name:"Brigitte Pientka"},{name:"David Thibodeau"},{name:"Anton Setzer"}],venue:"POPL 2013",links:[["doi","10.1145/2480359.2429075"],["online","https://www.cse.chalmers.se/~abela/popl13.pdf"]]},{title:"Staged Compilation with Two-Level Type Theory",authors:[t],venue:"ICFP 2022",links:[["github","AndrasKovacs/staged"],["online","https://andraskovacs.github.io/pdfs/2ltt.pdf"],["doi","10.1145/3547641"]]}]},{type:"Universes",items:[{title:"Crude but Effective Stratification",authors:[T],links:[["slides","https://personal.cis.strath.ac.uk/conor.mcbride/Crude.pdf"]]},{title:"Generalized Universe Hierarchies and First-Class Universe Levels",authors:[t],links:[["arxiv","2103.00223"]]},{title:"Dependently typed lambda calculus with a lifting operator",authors:[{name:"Damien Rouhling",link:"https://www-sop.inria.fr/members/Damien.Rouhling"}],links:[["online","https://www-sop.inria.fr/members/Damien.Rouhling/data/internships/M1Report.pdf"]]},{title:"An Order-Theoretic Analysis of Universe Polymorphism",venue:"POPL 2023",authors:[f,n,{name:"Reed Mullanix"}],links:[["online","https://favonia.org/files/mugen.pdf"],["doi","10.1145/3571250"]]},{title:"Impredicative Observational Equality",authors:[g,m],venue:"POPL 2023",links:[["online","https://hal.inria.fr/hal-03857705"],["doi","10.1145/3571739"]]}]},{type:"Equality in Type Theory",items:[{title:"Separating Path and Identity Types in Presheaf Models of Univalent Type Theory",authors:[{name:"Andrew Swan"}],links:[["arxiv","1808.00920"]]},{title:"A Syntax for Higher Inductive-Inductive Types",authors:[p,t],venue:"FSCD 2018",links:[["doi","10.4230/LIPIcs.FSCD.2018.20"]]},{title:"Signatures and Induction Principles for Higher Inductive-Inductive Types",venue:"LMCS 2020",authors:[p,t],links:[["arxiv","1902.00297"],["doi","10.23638/LMCS-16(1:10)2020"]]},{title:"Contributions to Multimode and Presheaf Type Theory",authors:[{name:"Andreas Nuyts"}],links:[["online","https://lirias.kuleuven.be/retrieve/581985"]]}]},{type:"Cubical Type Theory",items:[{title:"Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types",authors:[d,a,l],venue:"ICFP 2019",links:[["doi","10.1145/3341691"],["online","https://staff.math.su.se/anders.mortberg/papers/cubicalagda2.pdf"]]},{title:"Normalization for Cubical Type theory",authors:[u,n],venue:"LICS 2020",links:[["doi","10.1109/LICS52264.2021.9470719"],["arxiv","2101.11479"],["online","https://www.jonmsterling.com/papers/sterling-angiuli-2021.pdf"],["slides","https://www.jonmsterling.com/slides/sterling-angiuli-2021.pdf"]]},{title:"Automating Kan composition",authors:[{name:"Maximilian Doré"}],links:[["slides","https://europroofnet.github.io/assets/wg6/stockholm-kickoff-slides/dore-europroofnet-stockholm-slides.pdf"]]},{title:"Syntax and models of Cartesian cubical type theory",authors:[n,A,o,I,f,{name:"Daniel R. Licata"}],venue:"MSCS 2021",links:[["doi","10.1017/S0960129521000347"],["online","https://www.cs.cmu.edu/~cangiuli/papers/abcfhl.pdf"]]},{title:"A cubical type theory for higher inductive types",authors:[r],links:[["online","https://www.cse.chalmers.se/~simonhu/misc/hcomp.pdf"]]},{title:"Cubical Type Theory: a constructive interpretation of the univalence axiom",venue:"TYPES 2015",authors:[S,o,r,l],links:[["arxiv","1611.02108"],["doi","10.4230/LIPIcs.TYPES.2015.5"]]},{title:"On Higher Inductive Types in Cubical Type Theory",venue:"LICS 2018",authors:[o,r,l],links:[["arxiv","1802.01170"],["doi","10.1145/3209108.3209197"]]},{title:"Computational Semantics of Cartesian Cubical Type Theory",venue:"PhD thesis",authors:[n],links:[["online","https://carloangiuli.com/papers/thesis.pdf"]]},{title:"A Cubical Language for Bishop Sets",venue:"LMCS 2022",authors:[u,n,c],links:[["arxiv","2003.01491"],["doi","10.46298/lmcs-18%281%3A43%292022"]]},{title:"Cubical Syntax for Reflection-Free Extensional Equality",venue:"FSCD 2019",authors:[u,n,c],links:[["arxiv","1904.08562"],["doi","10.4230/LIPIcs.FSCD.2019.31"]]}]},{type:"Implementation",items:[{title:"A Categorical Perspective on Pattern Unification",authors:[d,a],links:[["online","https://saizan.github.io/papers/pattern-unif.pdf"]]},{title:'The "Elaboration Zoo"',authors:[t],links:[["github","AndrasKovacs/elaboration-zoo"]]},{title:"Elaboration with First-Class Implicit Function Types",authors:[t],venue:"ICFP 2020",links:[["github","AndrasKovacs/implicit-fun-elaboration"],["doi","10.1145/3408983"]]},{title:"Higher-Order Constraint Simplification In Dependent Type Theory",authors:[{name:"Jason Reed"}],venue:"LFMTP 2009",links:[["doi","10.1145/1577824.1577832"],["online","https://www.cs.cmu.edu/~jcreed/papers/csl08-hocs.pdf"]]},{title:"Overlapping and Order-Independent Patterns",links:[["online","https://jesper.sikanda.be/files/overlapping-and-order-independent-patterns.pdf"]],authors:[h,{name:"Dominique Devriese"},{name:"Frank Piessens"}]},{title:"Elaborating Dependent (Co)Pattern Matching",links:[["doi","10.1145/3236770"]],authors:[h,a],venue:"ICFP 2018"}]},{type:"Miscellaneous",items:[{title:"Coq's Vibrant Ecosystem for Verification Engineering",venue:"CPP 2022",authors:[{name:"Andrew W. Appel",link:"https://orcid.org/0000-0001-6009-0325"}],links:[["online","https://www.cs.princeton.edu/~appel/papers/ecosystem.pdf"],["doi","10.1145/3497775.3503951"]]},{title:"The End of History? Using a Proof Assistant to Replace Language Design with Library Design",authors:[{name:"Adam Chlipala"},{name:"Benjamin Delaware"},{name:"Samuel Duchovni"},{name:"Jason Gross"},{name:"Clément Pit-Claudel"},{name:"Sorawit Suriyakarn"},{name:"Peng Wang"},{name:"Katherine Ye"}],venue:"SNAPL 2017",links:[["doi","10.4230/LIPIcs.SNAPL.2017.3"],["online","https://drops.dagstuhl.de/opus/volltexte/2017/7123/pdf/LIPIcs-SNAPL-2017-3.pdf"]]}]}],F=JSON.parse('{"title":"Recommended Reading","description":"","frontmatter":{},"headers":[],"relativePath":"guide/readings.md","filePath":"guide/readings.md","lastUpdated":1668050816000}'),D={name:"guide/readings.md"},M=k({...D,setup(x){return(R,e)=>{const b=C("Publications");return P(),v("div",null,[e[0]||(e[0]=i("h1",{id:"recommended-reading",tabindex:"-1"},[s("Recommended Reading "),i("a",{class:"header-anchor",href:"#recommended-reading","aria-label":'Permalink to "Recommended Reading"'},"​")],-1)),e[1]||(e[1]=i("p",null,"This is a list of documents that are helpful or simply related to the design & implementation of Aya, randomly ordered.",-1)),e[2]||(e[2]=i("p",null,[s("Beware that you are encouraged to suggest changes to this page! Just go to the bottom of this page and there will be a link. Apart from this list, Jon Sterling's "),i("a",{href:"https://www.jonmsterling.com/cubical-bibliography.html",target:"_blank",rel:"noreferrer"},"cubical bibliography"),s(" is also a good source of information.")],-1)),y(b,{pubs:w(L)},null,8,["pubs"])])}}});export{F as __pageData,M as default}; diff --git a/assets/guide_readings.md.DU4j-4Ox.lean.js b/assets/guide_readings.md.DU4j-4Ox.lean.js new file mode 100644 index 0000000..c913deb --- /dev/null +++ b/assets/guide_readings.md.DU4j-4Ox.lean.js @@ -0,0 +1 @@ +import{d as k,c as v,j as i,a as s,G as y,k as w,B as C,o as P}from"./chunks/framework.BnE-uSbk.js";const T={name:"Conor McBride",link:"http://strictlypositive.org"},o={name:"Thierry Coquand",link:"https://www.cse.chalmers.se/~coquand"},S={name:"Cyril Cohen",link:"https://perso.crans.org/cohen"},t={name:"András Kovács",link:"https://andraskovacs.github.io"},p={name:"Ambrus Kaposi",link:"https://akaposi.github.io"},r={name:"Simon Huber",link:"https://simhu.github.io"},A={name:"Guillaume Brunerie",link:"https://guillaumebrunerie.github.io"},a={name:"Andreas Abel",link:"https://www.cse.chalmers.se/~abela"},d={name:"Andrea Vezzosi",link:"https://saizan.github.io"},l={name:"Anders Mörtberg",link:"https://staff.math.su.se/anders.mortberg"},h={name:"Jesper Cockx",link:"https://jesper.sikanda.be"},I={name:"Robert Harper",link:"https://www.cs.cmu.edu/~rwh"},n={name:"Carlo Angiuli",link:"https://carloangiuli.com"},c={name:"Daniel Gratzer",link:"https://www.danielgratzer.com"},u={name:"Jon Sterling",link:"https://www.jonmsterling.com"},m={name:"Loïc Pujet",link:"https://pujet.fr"},g={name:"Nicolas Tabareau",link:"https://tabareau.fr"},f={name:"Kuen-Bang Hou (Favonia)",link:"https://favonia.org"},L=[{type:"General Type Theory",items:[{title:"Observational Equality: Now for Good",venue:"POPL 2022",authors:[m,g],links:[["doi","10.1145/3498693"],["conference","https://dl.acm.org/doi/pdf/10.1145/3498693"]]},{title:"Copatterns: programming infinite structures by observations",authors:[a,{name:"Brigitte Pientka"},{name:"David Thibodeau"},{name:"Anton Setzer"}],venue:"POPL 2013",links:[["doi","10.1145/2480359.2429075"],["online","https://www.cse.chalmers.se/~abela/popl13.pdf"]]},{title:"Staged Compilation with Two-Level Type Theory",authors:[t],venue:"ICFP 2022",links:[["github","AndrasKovacs/staged"],["online","https://andraskovacs.github.io/pdfs/2ltt.pdf"],["doi","10.1145/3547641"]]}]},{type:"Universes",items:[{title:"Crude but Effective Stratification",authors:[T],links:[["slides","https://personal.cis.strath.ac.uk/conor.mcbride/Crude.pdf"]]},{title:"Generalized Universe Hierarchies and First-Class Universe Levels",authors:[t],links:[["arxiv","2103.00223"]]},{title:"Dependently typed lambda calculus with a lifting operator",authors:[{name:"Damien Rouhling",link:"https://www-sop.inria.fr/members/Damien.Rouhling"}],links:[["online","https://www-sop.inria.fr/members/Damien.Rouhling/data/internships/M1Report.pdf"]]},{title:"An Order-Theoretic Analysis of Universe Polymorphism",venue:"POPL 2023",authors:[f,n,{name:"Reed Mullanix"}],links:[["online","https://favonia.org/files/mugen.pdf"],["doi","10.1145/3571250"]]},{title:"Impredicative Observational Equality",authors:[g,m],venue:"POPL 2023",links:[["online","https://hal.inria.fr/hal-03857705"],["doi","10.1145/3571739"]]}]},{type:"Equality in Type Theory",items:[{title:"Separating Path and Identity Types in Presheaf Models of Univalent Type Theory",authors:[{name:"Andrew Swan"}],links:[["arxiv","1808.00920"]]},{title:"A Syntax for Higher Inductive-Inductive Types",authors:[p,t],venue:"FSCD 2018",links:[["doi","10.4230/LIPIcs.FSCD.2018.20"]]},{title:"Signatures and Induction Principles for Higher Inductive-Inductive Types",venue:"LMCS 2020",authors:[p,t],links:[["arxiv","1902.00297"],["doi","10.23638/LMCS-16(1:10)2020"]]},{title:"Contributions to Multimode and Presheaf Type Theory",authors:[{name:"Andreas Nuyts"}],links:[["online","https://lirias.kuleuven.be/retrieve/581985"]]}]},{type:"Cubical Type Theory",items:[{title:"Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types",authors:[d,a,l],venue:"ICFP 2019",links:[["doi","10.1145/3341691"],["online","https://staff.math.su.se/anders.mortberg/papers/cubicalagda2.pdf"]]},{title:"Normalization for Cubical Type theory",authors:[u,n],venue:"LICS 2020",links:[["doi","10.1109/LICS52264.2021.9470719"],["arxiv","2101.11479"],["online","https://www.jonmsterling.com/papers/sterling-angiuli-2021.pdf"],["slides","https://www.jonmsterling.com/slides/sterling-angiuli-2021.pdf"]]},{title:"Automating Kan composition",authors:[{name:"Maximilian Doré"}],links:[["slides","https://europroofnet.github.io/assets/wg6/stockholm-kickoff-slides/dore-europroofnet-stockholm-slides.pdf"]]},{title:"Syntax and models of Cartesian cubical type theory",authors:[n,A,o,I,f,{name:"Daniel R. Licata"}],venue:"MSCS 2021",links:[["doi","10.1017/S0960129521000347"],["online","https://www.cs.cmu.edu/~cangiuli/papers/abcfhl.pdf"]]},{title:"A cubical type theory for higher inductive types",authors:[r],links:[["online","https://www.cse.chalmers.se/~simonhu/misc/hcomp.pdf"]]},{title:"Cubical Type Theory: a constructive interpretation of the univalence axiom",venue:"TYPES 2015",authors:[S,o,r,l],links:[["arxiv","1611.02108"],["doi","10.4230/LIPIcs.TYPES.2015.5"]]},{title:"On Higher Inductive Types in Cubical Type Theory",venue:"LICS 2018",authors:[o,r,l],links:[["arxiv","1802.01170"],["doi","10.1145/3209108.3209197"]]},{title:"Computational Semantics of Cartesian Cubical Type Theory",venue:"PhD thesis",authors:[n],links:[["online","https://carloangiuli.com/papers/thesis.pdf"]]},{title:"A Cubical Language for Bishop Sets",venue:"LMCS 2022",authors:[u,n,c],links:[["arxiv","2003.01491"],["doi","10.46298/lmcs-18%281%3A43%292022"]]},{title:"Cubical Syntax for Reflection-Free Extensional Equality",venue:"FSCD 2019",authors:[u,n,c],links:[["arxiv","1904.08562"],["doi","10.4230/LIPIcs.FSCD.2019.31"]]}]},{type:"Implementation",items:[{title:"A Categorical Perspective on Pattern Unification",authors:[d,a],links:[["online","https://saizan.github.io/papers/pattern-unif.pdf"]]},{title:'The "Elaboration Zoo"',authors:[t],links:[["github","AndrasKovacs/elaboration-zoo"]]},{title:"Elaboration with First-Class Implicit Function Types",authors:[t],venue:"ICFP 2020",links:[["github","AndrasKovacs/implicit-fun-elaboration"],["doi","10.1145/3408983"]]},{title:"Higher-Order Constraint Simplification In Dependent Type Theory",authors:[{name:"Jason Reed"}],venue:"LFMTP 2009",links:[["doi","10.1145/1577824.1577832"],["online","https://www.cs.cmu.edu/~jcreed/papers/csl08-hocs.pdf"]]},{title:"Overlapping and Order-Independent Patterns",links:[["online","https://jesper.sikanda.be/files/overlapping-and-order-independent-patterns.pdf"]],authors:[h,{name:"Dominique Devriese"},{name:"Frank Piessens"}]},{title:"Elaborating Dependent (Co)Pattern Matching",links:[["doi","10.1145/3236770"]],authors:[h,a],venue:"ICFP 2018"}]},{type:"Miscellaneous",items:[{title:"Coq's Vibrant Ecosystem for Verification Engineering",venue:"CPP 2022",authors:[{name:"Andrew W. Appel",link:"https://orcid.org/0000-0001-6009-0325"}],links:[["online","https://www.cs.princeton.edu/~appel/papers/ecosystem.pdf"],["doi","10.1145/3497775.3503951"]]},{title:"The End of History? Using a Proof Assistant to Replace Language Design with Library Design",authors:[{name:"Adam Chlipala"},{name:"Benjamin Delaware"},{name:"Samuel Duchovni"},{name:"Jason Gross"},{name:"Clément Pit-Claudel"},{name:"Sorawit Suriyakarn"},{name:"Peng Wang"},{name:"Katherine Ye"}],venue:"SNAPL 2017",links:[["doi","10.4230/LIPIcs.SNAPL.2017.3"],["online","https://drops.dagstuhl.de/opus/volltexte/2017/7123/pdf/LIPIcs-SNAPL-2017-3.pdf"]]}]}],F=JSON.parse('{"title":"Recommended Reading","description":"","frontmatter":{},"headers":[],"relativePath":"guide/readings.md","filePath":"guide/readings.md","lastUpdated":1668050816000}'),D={name:"guide/readings.md"},M=k({...D,setup(x){return(R,e)=>{const b=C("Publications");return P(),v("div",null,[e[0]||(e[0]=i("h1",{id:"recommended-reading",tabindex:"-1"},[s("Recommended Reading "),i("a",{class:"header-anchor",href:"#recommended-reading","aria-label":'Permalink to "Recommended Reading"'},"​")],-1)),e[1]||(e[1]=i("p",null,"This is a list of documents that are helpful or simply related to the design & implementation of Aya, randomly ordered.",-1)),e[2]||(e[2]=i("p",null,[s("Beware that you are encouraged to suggest changes to this page! Just go to the bottom of this page and there will be a link. Apart from this list, Jon Sterling's "),i("a",{href:"https://www.jonmsterling.com/cubical-bibliography.html",target:"_blank",rel:"noreferrer"},"cubical bibliography"),s(" is also a good source of information.")],-1)),y(b,{pubs:w(L)},null,8,["pubs"])])}}});export{F as __pageData,M as default}; diff --git a/assets/guide_vscode-tutorial.md.Bwg1aD-U.js b/assets/guide_vscode-tutorial.md.Bwg1aD-U.js new file mode 100644 index 0000000..a9ef0de --- /dev/null +++ b/assets/guide_vscode-tutorial.md.Bwg1aD-U.js @@ -0,0 +1 @@ +import{_ as o,c as t,a2 as a,o as r}from"./chunks/framework.BnE-uSbk.js";const p=JSON.parse('{"title":"So you are using VSCode","description":"","frontmatter":{},"headers":[],"relativePath":"guide/vscode-tutorial.md","filePath":"guide/vscode-tutorial.md","lastUpdated":1689586300000}'),s={name:"guide/vscode-tutorial.md"};function i(n,e,d,c,l,h){return r(),t("div",null,e[0]||(e[0]=[a('

So you are using VSCode

Go to GitHub Releases, click the latest successful run, scroll down to the bottom of the page, download the "aya-prover-vscode-extension", and unzip it. Then, follow VSCode docs to install the extension.

It remains to configure the Aya language server. There are two ways to use the server. First, open settings, search for "Aya path", you should see a text box. Then, you have a choice:

  1. Use a jar file. Put your lsp-fatjar.jar file path there. Make sure you have a java executable in the Path (recommended) or in java.home key in the settings json.
  2. Use the jlink version of Aya. Put the aya-lsp (or aya-lsp.bat if you are on Windows) file path there, which is under the bin folder of the jlink distribution. In this case, you don't need to have a java executable in the Path.

Then, open a directory that is an Aya project (see project-tutorial). Open any .aya file, you should see some basic highlight (keywords, comments, etc.). Wait for VSCode to activate the extension, and hit Ctrl+L Ctrl+L to load the file. At this point, you should see advanced highlight (type names, constructors, etc.), with clickable definitions.

The rest of the features should be quite discoverable for regular programmers, such as hovering a red or a yellow wavy line to see the error message, etc. Please create issues and discuss ideas on how to improve the error reports.

',6)]))}const f=o(s,[["render",i]]);export{p as __pageData,f as default}; diff --git a/assets/guide_vscode-tutorial.md.Bwg1aD-U.lean.js b/assets/guide_vscode-tutorial.md.Bwg1aD-U.lean.js new file mode 100644 index 0000000..a9ef0de --- /dev/null +++ b/assets/guide_vscode-tutorial.md.Bwg1aD-U.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,a2 as a,o as r}from"./chunks/framework.BnE-uSbk.js";const p=JSON.parse('{"title":"So you are using VSCode","description":"","frontmatter":{},"headers":[],"relativePath":"guide/vscode-tutorial.md","filePath":"guide/vscode-tutorial.md","lastUpdated":1689586300000}'),s={name:"guide/vscode-tutorial.md"};function i(n,e,d,c,l,h){return r(),t("div",null,e[0]||(e[0]=[a('

So you are using VSCode

Go to GitHub Releases, click the latest successful run, scroll down to the bottom of the page, download the "aya-prover-vscode-extension", and unzip it. Then, follow VSCode docs to install the extension.

It remains to configure the Aya language server. There are two ways to use the server. First, open settings, search for "Aya path", you should see a text box. Then, you have a choice:

  1. Use a jar file. Put your lsp-fatjar.jar file path there. Make sure you have a java executable in the Path (recommended) or in java.home key in the settings json.
  2. Use the jlink version of Aya. Put the aya-lsp (or aya-lsp.bat if you are on Windows) file path there, which is under the bin folder of the jlink distribution. In this case, you don't need to have a java executable in the Path.

Then, open a directory that is an Aya project (see project-tutorial). Open any .aya file, you should see some basic highlight (keywords, comments, etc.). Wait for VSCode to activate the extension, and hit Ctrl+L Ctrl+L to load the file. At this point, you should see advanced highlight (type names, constructors, etc.), with clickable definitions.

The rest of the features should be quite discoverable for regular programmers, such as hovering a red or a yellow wavy line to see the error message, etc. Please create issues and discuss ideas on how to improve the error reports.

',6)]))}const f=o(s,[["render",i]]);export{p as __pageData,f as default}; diff --git a/assets/index.md.ukG0WVuo.js b/assets/index.md.ukG0WVuo.js new file mode 100644 index 0000000..474f088 --- /dev/null +++ b/assets/index.md.ukG0WVuo.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BnE-uSbk.js";const l=JSON.parse('{"title":"Aya Prover","description":"","frontmatter":{"layout":"home","title":"Aya Prover","hero":{"name":"Aya Prover","text":null,"tagline":"A proof assistant designed for formalizing math and type-directed programming."}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717718914000}'),r={name:"index.md"};function o(n,i,d,s,c,m){return a(),t("div")}const f=e(r,[["render",o]]);export{l as __pageData,f as default}; diff --git a/assets/index.md.ukG0WVuo.lean.js b/assets/index.md.ukG0WVuo.lean.js new file mode 100644 index 0000000..474f088 --- /dev/null +++ b/assets/index.md.ukG0WVuo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BnE-uSbk.js";const l=JSON.parse('{"title":"Aya Prover","description":"","frontmatter":{"layout":"home","title":"Aya Prover","hero":{"name":"Aya Prover","text":null,"tagline":"A proof assistant designed for formalizing math and type-directed programming."}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717718914000}'),r={name:"index.md"};function o(n,i,d,s,c,m){return a(),t("div")}const f=e(r,[["render",o]]);export{l as __pageData,f as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 zcmV(`K-0f>Pew8T0RR910Dm+96951J0Mft!0Di&%1ONa400000000000000000000 z0000Qg?t;OY#b^-NLE2ohhslYRzXsMC}fi?=tOuq~;f`?E6 zHUcCAge(h!7ytwy1&nkDARDC0C2Tt6*3?ZzfOR*Tv`+2yC*zjc?eMGCJiCoV*bL6f zIr{%Il8!NIqx%7XC zfB%Ne7oT4!(E~}ApxNY z{~V?-Iag{r$3o^EPM)kg=cZ0v$)1YaL~Zm~U}5B@ez>o>&l4YQQ3&_x%CEXx8d`z_ zqzE}YjyOrLrTGx#2T=k*`+d*rCEH5_nh`Z{@$m2Rf4@&AnM=*%03As#w%ZxpE{yFyE zw`d&jrjeLo)%Iyo`hfYbC@Y_9n-tYLg9(#c(1DIqm4m*)SU`ee8s;VyNu4+JmNw#d?yY`v(@+k{} z3Cv`(`vKt2_EjsgvclDfDgp!7uTwLLDE*0^ZnjiTymNYe$# zG%0Eqgy!CBLNjjwa!nH$(*o~2Z=Er^Ip@29GY#@g0Xzd>Tmv)n9%giglFnEcgqL0F zv+SbK`5?L=%+9Z0%WU3uK>x5Xov_p~h6l3M>FNN_P5?jxfFu$!IksoSIekCPz1mz; zq7+FDSg2n)B<1ejyWlmS3xETl{2>TMAm@NV%}vQEJ>kHp2{~i@eE#p9zW2`kbE1sZ znAk}Jt*5muvTzOh8W_hi46_*1{%01EH1Ea`Pmv%&-!G-!k6FHhEzKA9nr93#9L|mi zBeJYpli$k!V`^ZI&~ABm=~}KXqi7KkKSSj9O(CGrWc@k_I_nq^`=~>3KIm=;oy4nC z7@foE0zsF^x}T=&LNY=fV(5@Kr*29~i#jC3sTUMw8+Awrr(WfxFXW;x=B|(M(wFhm z*9g>i6|V0sMn6Kjehh|woGf_?Ay5aD0i_(%V=k6qBlhAXxiK$3(xEWwVmeuNx`_b@ zHb5EMAK>^LKp95}^%tkef-u_%$hFtQVuX-V?}I?GBdi0001N>8wnqBx$iG0KAjk{v z)pk!}5mS1w_VDdxJ@FBB_pZj~S1-W6O6*9&tgP19*!F1oiMt;ry}V{zUDvFl_OtWM z_5L$mYY#rV`3}LFHx`JsSAO?e|Ia9lb**lXeYf+%3mvUkRV z=Yq<^7G2<`$X$H*t$ya${14_nTswpRe73pim)`5rzich|fB*IIn*Yc9zXRqmh~2eu zW>?}X4xl|1(RnRTfc3B)fn#~6oL)Rdx8Q_7>OGbCZi*XRha2?dgkOb9~pj z?p5qY+oIK1FRJbm9rByc^UZEFbK%h8HUpM%}MQ0G^9G z0D~zhrA@nT6)s%4^Weu{unr7aOaBbDB`tu;59wg93$O07L#{S9PK>|u(v^21wZ3|C#Nc2|A=ImD}~ zLc-Ny_vwBRlM zeOg^pC#XKI_eYTsXN3P9;IH!6fo#DvHPrlmjn6d}05O9qvk>ds0T4T`Fgv!Qzh@Xs zH&Y%P;a5sYi0ArLb-7#ivG8twh$l!3$MVmtqET1T`de#aDr#w>Q34#3rQVTmlQ_Gk zhF>xDCn~$JQqM}sRNtq6by=aXwiXhux<7AGg|9B}8`mc$IL?dGmAgOHZ~5@I%eDU` zE?$X^CctGTw(31d{*mq)yGP{z2S>e|L0%Rt@>jKhMKDW z2@Q7l@?WSQ|9^m?U0-b0`TzLq_#B8||9n^x*SDJin-hDpwC-FoOSk4X2IDqvF$cQF z*s}8*%y)}b`Ybe8X?}EWQXTH5?Rsc8Fhrp~pO-=@ZtU{j{K)+OAs+sG@|WMb4pJ9s z{#jj}*C6VJ1$T=zcJQCdV5Ly#8jkRj7_1asus^~OzpL!EWaNJ4LR!uCe!)&%di0Yx zo35-S^1a&>6nmM8O4@G0Q!?M7*GQN^6~68TF@GPfJH|b1L%`8hksKRBd;?B!vQr_t+lV} zAF<=@K(`SHc>_SQU=BQ!)qz|C|Ln4qV-?UvHakPuC54(35H1D)@Yz}CgVSIMfdbkX zPy)_*%(0wiWWb_6v_{CW5)65R4ah{ZrcgPSg*G!7sL7B4tw2Ho{g4wxV-9bzi)z4E zm!mkqm~xjI3|7z*^g$&zI0qV#HROnK*5`h=g8<+h1d(?8>HV{=taY1gmXy88uPVLA z0zOVy{{%UIB|mVf7(*o_Q$oKQXf7r0I9>M{f?~D&_r9y}w)=jsJ-#H#Z zCw!D?n>vU+(0(BsY2SI;4!5tTui%T(Gi`@4@BNhgL}B1-<^w$c8{>Y`J$dK;)USR0 zuEn9>{MucOy04#i&yA7aXuan}%q#DCxc~3}-}msniJw3BsQrKbE{^t*# zc?o_3XXO?7?iWawYxTxgeu!V+to*zb{x{ z53h{zrsBX^e=8^T;KsiT-zx#*|Gdg*!Nk=;|7{2c1Z)5R0_Zoh{A|WnIaiLGvOH%0 zAibt${MWPRh5WStK7K!d=>pDxzf%%^@j{|_2%2hPm@a_l{fZ( zT|TeAkEIH(nSFTc{vM5&b}qCvOF8jupSj!4+uxpj=2nIKBH!8^Da6y~YMOvq@5URN zQj*^1>YM!>{jZ=53c4CvRKw-{|8HuyDWtO*jVh3LJ&B6vy9;HGgQga?^K1cFP77Q%+Im~a4j#_r~q zap%Y<#K2)}P@ECYUt$30AcPoLadMS~y|gyngWCh6IOnghRl(^=T@V8bhFDezf{7^1 z~Y%9{QmKM3rx& za87ARQfA0iGq6{#FD)Ioc1V|^QVYj`Qq=S7x5lCV&JGw>=f|D*)(2fzo(jQv-`j5a z)d+bJxoBtwUVit!*&M1fEY;Ifc;F%AsF2n9#_M21yOy%+E zQlc2w%G)s0WYrL8fT1KnjG6<|yN}#4Xsj~$Y)LW50RQ&1H!=`F5JhBk8ssY)6;p`@ z-B=TVWQ7EDQ?sEHn3@6*BXfHO{;`nfa`)~0p;Hv>^(5*N-ZyGYpuA^X|npfaptyQ5<{$+U=pxaFlqfViTI${?XkAN zme~s1WABtcD*d0*l+zoq18k1vmakT2`|QKgFO;Gn13A^-FTf}QPZsg4xvX%~vUQgM z#^aJR;qWiyy-Ok)2T3N#0VMH4OR6D)V83|%UT!QT9Vh|}iKdgTOGGz=sYhIe4V07t z?!1stI9}*Jiw95Me9-yHz~Im1qBkO_HiE_F?t;F;nA&}K_B6Se?AUVe9FG{XwWz-=372vNG1;<3#udg0iSeiL&Pott@BzY)A?!mE3a^9e`otpk$oaIS zBF9LM^yH$FIq4}yBVW@}iymW|q^Fe-Ih>YWA~7~idPXtG1SK;-n$CKXsAvih?(g$2 zA0>$br;!RqTOsIk7#xS{ypBf!IH;y>YP4Rnk-kn*3qc+&)C4Gx1)&NeI{=;oXb=P) zz*?0$%7$u{AQaUj(2eNpm(JL%KO{j^wI5Y^X@yuU@|>gS@NG)Q@Vk%QfhvXzqi0_0 zHkVD#a(50NiNsgKT@y<_FH_v22|+c#D$XsJXLi?CMt(ZGxl-V~&4uW+M}C|yhPi0- z_O85ejNF*u4RS@1i~3IjPm?kMCbN>33Q{7Ek_Q#1f$)r&36$xQBk?Yl^|(fCvaKX@ zk{2as%$d0LHDwrm`vvyh+smNNVX zE*+WO48n)*kmr%7QK0#B;7s>wV(>)w-gYU&f3u5W>F-mHw|gY2Rmlw6PwkTHavIO$ zLm|{WC&>iiGUqSLx$LHM>$4Tk#A;G1o{n2%i`If2a*19Je>n^0bWxdto1fa7^oCQo zfn)Bp7oDiy!OGBLKI1z|6n zFE=l504I}0Zdl1Cc=pzOw9lmvQ1HB40}|f7D{~*7iCf8(Veevya&f`>7$xKC6?zEB zlNmuMeegLpV9Jp;k$oWnnnduDeza@p8UWUU76lv^nl633`^2`_*EBVhT3`^r;t%m`*NNv~xJJl5GLKnKD?>H6~%ehL(rNO0YK|-` z#+1mP9>gEa0SeY=T-X!%>jNe+g?;pNs;e%TItYX>I5=0fb8W;^8WRv=^E7zI$sq~T zi0l+ZX`&|vycy1I{?BfVeAs=%qlNJ}yB@{k~%pr;+=S_$~<>gMYycmyb5bD>UsW!X%JJYTEKOmP?<4dscycy+Sgf~9ww z#^x{1nKLKdZ~(%Aehc4aMquy(8ajp8+KC|wsxPQUpa+nedhRCQ%=Op-E81Mv!u73) zcI%}E?d&C%oyBiNF71NpJ1<$hJ3_}@IucC3LlGB9&)Av>FScg99!XZsE}~Y82S0FfvY+u zRJm=2e%hug&vOdUmmzLu^iZ!{4d;qS1+8~{#LFroP7Q}s-D@=Ry&~v%w^M2~-ihM{ z*KC35^ybj-QKmBu(x+b;v5d~lUxDXe_1f&17U?8zeR-U(YFbX@K;Nw8&dSsQSlR$k zT-$ih;v0e)X8h*NAWTKnrg)iNLXe0}Pl~4Ym!r!hq&1fD277NH--6SFvg-#OatiXY zt*s=VLOu+3tD`gz-}{vBPOG&A8f?(PHo*XKbAECjc;dCg?Q!B!hZkBEk z0av7t!2Fk86kQ?FWO6YaOkp!z(ZR9WmSd4@EZ0XGkR*{h2(5~z5D}kQq37Y8IMEd%__qP8fTzBi;GZzMGLyjH#U^C>^I7^f~>mZQ{y_Qe|$<1IEJQ4wj9E)zyEg8Ebz$`!C zzxyvSU2n;7rMWeCx5md3@cgjscA|f!l%JHpW+~e{%S>uo8^{{9H;mY`d1GZR$8QAc z>k8VSD{v_J8$DLa_Bvt8!P3@B<8~n);g)tVtEXD^XmmNA?tEh{d&dme8{nbAvC?GNgX=P-HH~|VCBwu`c^xN8XW=D(7b~t1L}Cb6uS7JeP8&Q z0a$JE8EX8MG9K~QwdWpZRFW#R5`FCG;?Co0uF4L_iFmWvwy?ww)03ejlVX}@uw|@* zuf-vEoq>HyE^&00ccT`FaZ;uwGsfTv5lx-mDJr-DC655IBx!6txX!OAUP;UNq)hsC z!`kEYqVBl%u!MHg#SlN!VwzV-Y#Rm10QuR&0Ahn}g3w_D@C0Kv)ymbg@L&KN9y_El zCHg(0DCdA2wpFF{aK3adJX#Zx>Q|lWm8Phx8?8w6R;|LInxcXT*g;j!MmwKHSJD@! zXvbmU8qDPV{^Y{_KFpLe?Wy!dba~0j-55abQ8T8Ju7`t%?S?wI0TsUlIU5qrtGJ=v zKYsnJ(!SI0jdbwO`y@px*apb?mlk(;oL4b61w$J*2>i>-B@VYhiy?1g9r-Nj;Ps<$lh$kN74&vZS79K zf+U3F`QTIMHI-40vEqgC?tE)P8M|J5eeWp8P~p66bKReZQJJXrr2dkge}(;Tux;3O z|2H>Sy(OKy`FFm-c4OKD-rUUh-wQwII~!62QH>jOhYD35ozb*xd{ET=+Pic>>knbb zx^V6wLt)AM4BD?k74@SAhba3&M7H*P zgRe0DC}Efn`B7U(uO)eNW`r=O0!UT8uN!^!a^I! zRIYoK<1NFXEkiul9A`~Bl3O+$03bHl^e0qS+1#x-Ucqc6c>+mCP&qYMT?<9HkwQcI znW3ijh(u{t&BX`wViMQHg8_*|r?lmohSb_o@}>M_Sd7M;N?fmxSH1-?Nzw(Gn3bDJ zWLf$oNI0j@N;v5-G8{lL1M^K^D`-N+qAp8@+3JM(T{epiZdz0Ok^b#`hrua_L9iuT zzn?r3#by#a)+>ms({B-3YxWRBvdsAv)VN9clIMS#I zyIqo049tjio60=YCOfN!EL6*G2Dbm|7DYvH8Fwz7v6CM-KpIl(FI|i10+*}UW z7*EaH`3naNkpOoWnAOiYwsnJ5oEQBpN8A z+EA=OX+)Nn7PrAf#hMC1nCP>;kG(qzL(76f}6mcrg)n4=BZ9{+ciqyBq~Qb zx2R>_dxbzWAr7FpmUijTPz1G{b;^n&EPOc}+d@EBmy5iW1UWJV$du}=+E>`FpBWFmZbeqdQ4O@^ni0=^CKpU3b}*`jpase;|B-LTdZM^mD?wWtIZJt6)>RkD5! z)579ECP2_8u6&&^)(5sKn;XxS`23Ye@hAGkKGs$wW;mLMJcWjP)@vnnrp28?9!6%U z&1WSg#&*QU&PwM!d)cOoIZYY3 zsyMy$Czw^w8?#RhW2q(Hnwwc`>zB9NL80Nq04B; zsMzj0YE;VZ6QkTNMGGDd?a)ac_)z()s>@)S2!~)C2`)wRweSN_*6^_ z^mz~S)9qj4hp|T(-_9KwUw5%@oJfBzTa6zInx~}{kK(#CzK?hO{l~ZcC^fTr5r0&+ zO8t4@aTELX|9r-jzhav3!!<9jrsqU59L<=*-bxCjXlA7ykXmhuYa#z}_z_isS+uVlW04b_E5Vb_V6EV)wV$m?Ns5X;KB%e^4YEDCxR` z9B#p9Y}eqeCzAFQ$LE<%lE#jE~#lA>D6z%uUf)?xKrmZ zemE9rq;v&0pm^o1k@~U4f$RCfkH82acxvf!eJrL`J}K85MvDB!#GZYwvn)brUIDbCy9yUAV&SM0+o6Q=7_x8oc9b5k4F;^JV} zYq0e#xNe5S5M%o8MU_#2o=i!K^me-wRW(Y>ShAYoP?KLW&OBWJv{x*#zYEcxO3u$p&lrwzw-WFuFe8 zwh>wSZoYoyp-D&Gp2)CVUCssS@m)%7qu8);Oao=QCbHDmw+R*@Tb0rPTvsHKeeSL> zClRHI?TU;))Br+~O6?dYCUiEf5yt8BvURnWZzr%z7igYWWJ*mOu9!N=u#;M|5*sRH zYv_ycIP+jTs}OgoC>3au^=Mx-2ZJ(m0r4*>guc*jK&%OmOa(ZmS$?Tv&w5eb;VOpiBW#ws zcnktvquwX>z_Wzo>Vve0F_nT3sb}a;r1b?SwqYnqUd!gn*uk!yZ{nu*Q&rA?gnkuN zdG+IGtd@bu@*q-!gueJI#mZtzDp z)_nUa;~NtO3{uKt+>b${$gmX5V0@VRJzSp>whz>AAURQ>LGnwz@{92(JPgqTkKN+H zAe*VM>mz&wjIL?-Dm_^nC$*`VAXS`#gCz64=AfhnWmWsKL+t<-~@7B+1^cALb&$+YP&?#?c1()u4(G& zG|fTzY}rw~e{wNtwll9rm?Im=A#{>UJ}apcZtH#rV02O~eELWb=q_%p{J?+zgaLrw z0o+%fRL?`k&*t*>p-g$3ecY~J0laSn`S4A+ci_vtP1L<@=5NR52_B1M`)$tBKYUy~ zmtdOvdG88zxb9w|*7rDS`0_bPhk0|z!FjG8zM8)v*t>62syUgC+fmvtGsz_@cc2g{ zJDQV}f;b*P+bvIgF~WSGwf)IoEOFiH^Tk7EorKJ8%`Gr5UUG5!XZjKhhb;S0mRZlN zfHY(EdaFx@+I}+IQN&fXf$ctb1tD7!MMG!tb;>Avu0c9%cSp3!@z|7X*VMs`X$1 zOX?1DCGNNfu_<1^m*jE1aqn6MC8zGm6cKR*MGuJvh|Nj=GB z$vaZ=Qsz)0QiIk&hoCp1Td+^VqTxR9MEH65E5rig2I4F7KU9SDKIv5HX&F9R1Z^wp zf-%F~!%kx#<4)pU;YA2?1S`2bx$g=pibO@KQs!RNUPEOuJB;K;#8hpG6#$9Ff2>eoo>vqFu?$&%f0;PL&c7894wo)lwjt(6Bp`X9 z8C|wm7uTg~F6*wfgo<7pcl68ikUm^?FmVPvSpyw3`bvWKa`K38Zhh%~NdM-vfeznS z{qm7~=O6_Xzvh`L_((2XMj)(}K-iSa%75+mwk_XRPV4*G{WjvD6bT#Cj`1bqLN2@R0TzJ|}A>og#;y{2uGwOj8BbJls- zV1pet*ot*m`2%|U%OhUni9jeY20NT^!cOdW4nZV%!Q)ULu-GhDBMjC5PrzpS6F`G{ zstM>eQ5wUKI9lK*{w478oe_fmD3$A1-S+dV-+cUVW51YI)p zyt}`0BzQ_^IFrgm*e&CsWICNXA!h{b@&DCq16|ElePr*)Z&8+BJpZ0eAt`s><$n%g ziOw{FiRCruY2{I(SX#qa2AY2mG{SF_yt5X+>yNYBg_wFI9y2q@%R&3UD-+At*NUPl zW0s-4zAnusOw;B0xjav4D*?8I(K^e0rik#_bRZLaXt{+pD-&DTDVGB~^)j)mTDn*b zni~>^2nD{_+>Gcnd`l4BI^gQQ=q=Oan3`j=ykYt-8})&SKnzwpEMX#Y{@;xrAt!Un zsrmjJ??4(HXrr{~KhYObn@pTfScP41C{~f>0T}P?=aE#(F{M)LAgF`U876|( zFX@bLelB0RM~aDf7K)B{u1Y4qusg&FeB~1`Rp-@K>Zma2G|Eoeg$7=(pO-LKKdAri zdsu+KIyV?uUu}w$Oakud-3(i<7su_xPL9&csza7|!0D?jx(&k}COqpu&HQmm!Tqa^ zUY(#(jKVV85{Q%%xoCHyAPetXd+7-0F|~lH#dsA3RiP&ZoEV##Sy(y?l11m^DewNLjY{RY z|C*b0fOA;PQBJ>FIylD@5AF@=^+$K=rMmTiaQo|&MbxaTRy@a4N2-AloMa>JJ?z-* zE+j>1=0!%s_Si4jHp(3g^L3c+KA1u`+w%8F?c;iL(IaByp$~`cp*{1hH=Y`jN^IQT)hx@l8S${$tzQ`oqP;&do9IB#htSfy zAP#~DfKl3?lh03kBJj6h+FCE@hc=ALKrb|-No^$#*66ssRZpo(+3fZ@4Kgzhg!YBc zgyhsc8!?4MmN(g6`H%ROiNLI$Onmy3KBJ9Po_Pla3Sv;8^x@eTz9RCy_X71t^gJ1S zC{BebT06E=Pn*Ik)@4I#<%KG_2BqzaBLWJz30v3chLc z>CW_$yev5B99^V)w3QYz2wWgR!Ub0%`oMdrDk$iPiemXCOwy6XK^cqGLEb7HV*TA9 z%Oc=ONMUby50sBkH&;lI5Q21AVl04h91{|K4}%yRAtsiP&#TxwOziRZKKJWWZ@U9L z-O!9Rzf0#NbnA@;PBvZa`rGvN|J)(Z(Z6dt&q|?GFh>dn^lOQXl200dVkl*Z zgh6UHhie1)KI26Z1oLYQ~Ew{CB!*=)MaI%*ZnU~PFym2kcMnFo`mg0g~Y0Ppknl2Wt zbgr}q4ORAS)Wpd;)QFj6NG2(XF^DAC8L1Dp`@68e8KaqEh7chMAT&9K+eJKHAQ+ZJ zVIY>|6c<#L0tG9;1Q7?da9HL9Q4hiwiG);ot3nxMdPpzO-OL48Xhk0^Si73PpTv>y zQwVVwB1kauq2+>5P*}&=o#zmxDJdLC0%6!LB3qj4`7f>MDILwD3x!*)CWqrg%4xla z-zt`-ZP`~AmTUDHNaZ}1bzXa~_4)KaJw1=v^}^^|YB<<+){|fd61}uUBxU_K3I(`- zAPfgF*6-}q%X{7nAIEWo(Hiw@3^AQoQ@+9@)E79(>WDV#Qlc)DtmX;l?{K1J1Kg;fcD75{540mBW+rZk=rG+U zOsBxkI1}e$XR>n=SkL9Esv0i#n4_uVKPI%^&@4;ubvm|gK+1X?LdVbuVM59P*n^jr zM&(W=l2MR;+mvo4g?48##_^VrNr{3+)?&=cT`Aj8n?gk|oGxp+VZl80lzQ_NI!`{u zf9XK0X2X7OOs2snBfj`@{@>zKtJ_>vZS0)|kHtA&iSfSG)s2u!QI1}-;y5Wgq7GKU zU&M%NQ-_7dYO>)GaG}nrtQ`ZUpub|JGCWC~*o>FiaWb4Y*tV&bi5XiLX8H{H2X``L zntr(u%_a~(iK(`ox@Vf4bis&Z~FX9&(MXDE5Ew(?UhUF;o_ojBAtj4R9*v0BmOIeDz<`Whs?2dv!HNoA$I()kVF1wZ-}oj ztiY+qq%zohey*;7t!)&8kr%y?rXG)EcSJvBv@X z40X#~Ssv=*x9S${lVwTnAP6qeD8b@`q+O$CEKpArtHvk{+XK}7)v zDZA9QZJE2hyWA4br9I!Xn6?od*_;0jx`A(g}q53rF zgim6aqN2pE-R5}*whj9X;$X+A?fY&)M{bfRJE%6+Y#;z$c+ECXI(6knWM&NuxnZ

1t(xH;=J#kr{_cc{|P&R?xVq7&+XkUmMRT&5ZzT2gdbSfHrRSO3wO{6?gPBDEh z{aYr0>y-!{z}gB)_HNYBHKy#*-5RXVxp!J?oY`+Cx|_b|vyRER5tXj&pMMxi)~ za#-5O+7#AbHCuXcOhq0!_o(=QY2_v8-{}OY0|Dt`#Ozr{@=Yc_7OfQ8>JNCI1i##{ z67jp1h-l`HpU$HkC4y4iy2>*P2=D>wC63Tf8)u7kziKV?Pt7N}Y_lYty;Q(JS;NTs zjj(vJvh^@-mc=gX&Qp+;sECeJKAw?O%*I4^!tw({5Wa2C6dazOlRd77g2G@EGv4<3H-;9Kz5jJ&`|YRT&WHGwes(Mv{a z>AyV|)HQbjuL^!B+}Orefqh!rl4%hr`xiTa;44~1Nw7s+<9i~i;#HBtG71#PShLn0 z7o%T3`VyY3{8JDlfI_>XuN~FD=py|Jy(4oHeOQh$^r3H%U?_z2scwrfjYjHra85iF z23bt7+r@g1xZr6o$B-qs+X?l2%ENHNAF7-&0-x3n6x(ebV|qs~ehIiK6)9~v5s z#zW?2u9lBzoycBJw-x0|W;C~cN`3>Z5rtNp>mjDH7A@=<9=51?7Bj$B#ON@e^L<$qkbPqZUu!r z*J8AsAtB;&QK4q%UTCKJBo$5JtAR2${tRqX-ef-a>^8dA7@sC$tc6}gTh&wvWZ*i9 zSjM5BGnnDym`^x9*lyJXn`%055u-6+M}Q!0jEo>xO%x)E<5MeKyq#m>9;84@5^SHHHF^#7s`8e@C~|X zgIre|o1@LiG{C1f^3ej1b6zIU_}F#9)AKP~jB;`gdNp%;LmWhf4Og+yYA;NJ&T zfybHz)K@e?$ae0%A_yh+2=ba~2oe~|goKXm)UI*<;UN0NL=QdOEW==-mVNO3gIhe| z;WN2V$#6v%%3Ap`*r=)oc!X{s@PdLr6(&o-3*5FVE%XD%(Vdf>|;_)mI3;Pq8@ zd`BwEbY11#ETy=$hZGpz;ZTQ)It*d(HWuBRfecMuux{0~PHKn4vKGHp>!o{PP&DVb zIw8^I_?8dY43BP~)~(@QxxG{G6mUAs?mhnMFjf6N{MgFj=a6XDx`~ri)C|Z;Q;Q${F3myYqQbF*E*ceYw zVzycfl9RS3yXJCLWj){Y5s_DMn6KxyNou4a`W<>K^KAs6AqEZF0OUJ8#o$}PKC!!f zNkAm9v37MQlwuyLUs|)w=64w_o@o!+pz_5*@R1nl*$nC21MJz_M}X;3xb$)#ubhLg zBpaOvJ@B8eT+;}43uUmU8n@YC7GxXSH=Rq@3mZlhf!Ry7&#Wu8t$87{x|LFmMN5@U zAH$Oi0gyzRQFdc>B0u<1;rL?V;??oSz)WAR7{EtoMn3pY1A%w5C?uV4+G4O6duc;p zaV>Jm^0-)r_15y$s3n%3N$NJ17uki3rDr*IJOP?uXV{H8##$Rm8uY7e_+`6A;DewFW-CaZWknri4eJx}lB7dOcl zh6`wn{#Z8-fb#|c{(fK#^kWHzaRi1j9F9GOJ?NUcb&u5a=EAh8)oQl1-pW>1H?6Ym zz9Ta$4{2}{9#s*({1cS}3CIK%hT)o}L(asdcW6sW#NyyarD4cu- z>6gWxZFJSqKY@N(CW$c`VLgp3lA@U8`?(>HPhio>!lI9JAXtJ!+7KO$mw&8xZARwujc{ zIP85CeL{v!wjo>*6Nq}O+W>XlpM{2(o%@#Otwb3;msKOy7OqLWQ6Xjgkz!EY# zk*Z9v5DRf27GY^P{Lob_?CPfVZSyo@wy{1CN=q%eMVRF9NzVXi5v2M$HmLiGEI6<~ zNpSvbz10A@IHl3CFK>*s`fUBkn}1``5Tx{yYS!GIkylUcWTUiQ^>k&gEN*}Kqqo4c zDD{RlY?lcUiC092>;Ff~LMVR@^7q{nCyfaVv;@iWzC&q*`}wl_M8e7 zNA)(X`O(bA>HKOMB3{9o^=kzEO$SbJoVslw$lV^o_aTxatcq?e##W|i1suCt8*jX} z^-FA>LMWBcE*w4N3Bp{061+4fW@3FOcdk>5NC%QbbNp&Ri`Ego`6D(IN^33=jw{U~ zkcp;53JGY6GkR(TOIb2%A)|LJv~jetnQSz>NB>K|v>%Nm$;J>t?*JW+Q-`rV4azz+=!mj|Fs|17@Rc{nm>ikA^q87GpT8KWD{~ZGDu2lAswiZOwUP9cTBhB4*s;`OaU{hm zWN)jm!hc`e4!-4D6p5Iw{J0y!JC$v(Le>@=7@j_`-jdO@=JQv4OA6MhE7rq})huL& z(EE+oddzo8hfLiily!QYUTd*tY3a7Ew->Lnt+~yv_LZ7#g%!%&46^_dL4TY^^M}JIhP0RX_x#QWl_6T9Bq21M5A^ zZkfIT2tW70-kNh9-Ur=k^L_znKbC9ra3mh|hZA8xSX^z^1;G!0rk681 zB|t!df(Q!K8vX%^liq2>g0Im&$A5L1-v3{5#~l^ylgK7tpUd#M zns?p#_j?^1HGo#(j=eFLtB6LcR z&jqH5n+=sB$H3-xDYd2eoDV|bZIy@DTJ~kfS&F?ojtfY@5~YhDM;o%P|26bZ>i-|-^7%db zFZXlv!BN|J;(Et^Svcskg;A`*VHm~e#Lahk5{41Sp5uCqc)m^QGu7)WwJVW|3t7#I zFn=(ue0t>VpNV*$!w&g-`oT?`rN-x2=pI&O1MJbp{68;z2UdqF=Yr!7T7^^&{wZ)F^H;*foNLm6#Zf6%bqu zLGxcO&mHh8HF`Fe&-82pUmkKK@9AECm83I}plAA(?M}E|nh#w}DG^CrAgI?#bCI?$1%NrbRz5D}$G9LiLB z@=cROjKx@j3no63lC#w}nkE+}Cgj48$AY`CGv$?!)HXKvp1`Z<8yV;r4|eyQ`6$pl z{GNc*?(NkE_PxfnH~&oA+~(rS>c#PTYnZsWS_~$AM#hzw?X2x^>HdGyo!!IMfa5)! zA1J<&W3xHZKT}XJ158;g@!7WOM#eNWADv~1jpUfknhT(E_m__fP8FnS(%-)41YwV| zRL1oCTla+ZBw--GcZIRmo3DBqSpiDlC~FlMO@u;0tC)<2B-#^l%V@0F-9~w0jvu)-^3J@9+Zm-ifZ?Jj<D&1zQr}bK`MkDyG_G(-0R$HJuXkHwhjTVIhG5#iG$soK{G|lOO)WguyJ-8 z(&@qQgM03SdMFY#6XA6@kw~Uf$z;MDc>L^Z5)9?DOJOc}hcsvppUVy8C6uwf!ZuUu z(Li84LCT(aECi9bivQi#7x06`PpObeTt567RtH12!amp+$KXKhPg;au)HG~ef4JK@ zlVzc%-dZ~E99~M$Ov|zntDp5H=FJPc?*@7#no%$uj1gG`Zm+HAty71sJwMM>7vAaL zu7j~iRIHC<{&zlf(^%to>0Q6;YDK-Y=S$4q=A0t)1U(e=OaCYPrzNdRQ4i7GUtOh= z*ydeO7e`drKR4}LhgYwzLiS)V6G@Q@EY_4ZR(C_4PNHBTKVD77Giuv=UiLGGZHA4I z<9;eAu(yg6wBI^>(^tvd>S&& zwfcMJMok4rScfT1q)1`e(H(u<{Rr{ry=+B%>8{=r=8mCZPOB}LnV!Y|EGuHY-I5!| zjPXE<=ar-L<#5k#N5_4?Yk!<_q`bfG-`d*FPmRL$D-r|c^f=gH39ht<2;dZdqve;q zGA@+jwCqDq)+x@wzt>23F13DE4UZ0n(Y-e7YRlF z-ac{2)T~3{*iyn2=O@oX$rX*tO&(A65E0Kf! zRCvtO)evkM7ZIrPQx6kTs`Ev#+-g&DZkr)#>hAGUy>WAqzhbR-X^XNj_VY%qzI5|~ zug5-L_JXSI?83s@&Kxw4+m4sX>AxO!DdfRC^g#5Y%G0qESuC4z-m{C)a9AY57>Nh# z0*KxPu7MM}K;Fs)CxSJt7GL#UDJ%aJA*iNDV@rWr`#}WQ<+h%}({^9B)@*7GWst2i zkW(<}z8Nt2>(xl_Dmb^c;C$(<$Fde~Cic4Kq)~H=9FJ}qO;Z{yO2pwWo^4M3TUk-3~TQ?UD&J>k~ccBfBqlI-fC$B6Z$dQ zMn3sfiZt?9DxS5JsWIM`AT+gz$duw}pJr8jT4OLPRwB1o1;qk$C+M*(@D)a;l_vi2 zcYV|7Q83%?A7tv4Kt9cCw}Czk^x@jLwvgu?H_y~+2hXf*Xo>$%J$cA>VR}3qmXG1nnV#P6sqF(|UyTf0I`*c zpu)fgG~-ferX}pI?QUx;wEv^5zcpxXn2qLEa^m4p%Pb0fUmlpV!mH-vMOwgCH$JTU zk7by|(bLK<_LtQ(iOOk&itX>Clqkx(3hP?xT9N8js)@K=zL@Ing@s9(Y=D&0rms>= zI?J=x-=#NQ2z}WQ&}(X=HjEd5n}9^i6jkqRcgmw=Ot0tl)a$ht|v=^2F%Jj zRm08&iKckhCE%JuNzut#Z+hN8I?C3o!e{Qyfln8>EvYT!eV+uUH(R7GMn z?7zY}4cCELZ&S6^2D9KZ=IySDqnz!IVD?gRa!8f6_MtuZ0~6WWIcX=?F;#p>3f|(% z@BjW{#g1R>a2q45aZBBN>I_me&6R8Bl!YM z@?8v<&9tU6&6(>cnnINVThcxSO_lwh(uia?mqoHF@ME2VFpQm)1~Iy3K??Ns;CVYU zGh*xjOS4N24L^Gis;NcE>pga<(ACqk)MRna;Ikp0d8Z|J(B$Q?nKZ24<2gQ_>&a*H z%KU8x)>uC)Zb}@5$V{$nBju`OI9qE7pozn!(;@3AiAc{zb1=8^u=|!a8;XXJ1u&x> zc*VE~e#3|Zwg<+7HP{7v;8g5_U483u5DdN$Q5eJkrWV8H`JqrUIh_?HBJc?GJOoD{ zGwPWl2A-f058EUTku!Om50=F?d{>XKvU*k)g*)u`<&iDFIG0bDH{iJ!=123;zGTg(-XLSLE{;ypXLRl9+|TCQ_AOT% zvURx^{Pr*er)wtOepD}2;OB&AQPW^ho$TkdtEh%;&WjNnCpa(kOrO~{esmT?Y_{d( z-#j+-@p1F;>LcmH=GzXSp(iCA;4d5}C5z3BWI(c5t^Px!&{(WGA-}_c=9k-dG41E- zo2F8womt>iEL2P3pV?zw`@Z)%Co~B4OU=vnwegh7m(=5a9A!zIX3kG!7+WcEhwCe0 z8zES7GI>9#Lwh=)&WgN&Lr)W&QX?plQElr0aeg^h=+rk9j7Yk-aUt1{%IT)pIzWxy zhlh=>1KaY%+GfVd>n7#}GpZ95iZkNCuYHV*QSO)a{5vTI&8nYHjHJp6$V(_-7zGr@ zC0#}m8Rqp=d}L%OI`*?=wmX`l8U}C$%voxzscLjMe=<@p~`L#x;5jn>Ti&{4P> zfe^(e&Np=#XGs(RB-kkNw)M%0wT9bez2;T($oSFtRx1c2wP4yvll@QGxr6ui%;SWAMMm0sHoW3=}NJ2=+g^I7q-0LWU7Z8VlwT z#zp$Si~uKDniH8(k9Z;R(hOWRWt2EdQjwseoWYEBtQbfsMZuhy%4tjASusM`=DV{+foDTw}0y;kr0Hy$Ji z%iq7^tKVF(wcpvOl8(>nE0!7Tn#J}de(so>F@C$7t>V$LTZdn^8HApPlFi?t4 zaU=zI34Vehaw7)AIEv{#0zt4O&QhY-Scr(#`2ZjM_{7$ON97jx#d7vm#{~DO^u2nR zCQMdpAv^!8roxJbf*Y6yl@~GSlKv*fa^LgicWN;bnKl^xP~%%aKt01^vEFIi*Z&^) z$B4|^+_;vJ80##`R>x6B?au48U<}_Z70;G*A9kAiA3=_g1zW#-5(Aqis1&*2&m^&ESCk6bBdq$18atUfM*|g_cY@jNrU*+Dm zNF|Uh)Mlu_twtI6xzP@65;_flab{LT(G9nOCP5)U6==|si0(;8?~k{T_}OXF?>kS& zSE$Cz<>t?lQxWtyV1K`YN^R|1jm@kCi-7~I~>lBH6L)Nt(e(C z7hSWrKFXf}H*B6&BKlZ}{19_tYx!CK4PgtR&+&(>Vz#S7v?t-c(Mk&c^L~y)ifzq5 zelkWW3{DrmJ&OTB0N1(7?K#>HkEv36k<{dggv<^%z2ZKezA+K3;?mns$w06?3uj0o z-HYR;phsCwCea?cTyqPKi#A9<*e)cap{E#EcOQDWgZO!94SsxA8;zM~b}w;R>6y7W zK5q(k?vLNx(y@r1=h&$ogGblDbS z#-d*k#?S-RHV7qT%_n$}F`FWLw#XqNleAJ(tVe@~| z(G?2&IbCzB$JRUG9vn#~;<54cb?FzU7mRupV(;d>jN|*3FIV6Al3h}z3H;o^%qw@N zfg*^vt~>Ojy?YrziIV=`p&2vMc1|xDOVhwwxn}IJO$Jc|6QB=mCABmEGL|=T?@PBe z+5H)Hhb&lNcxiO)VpsN$-kXM+j{M#h`ig@%d(om3?r*BDL@?~MK{d7QMx$;QBZF<) zzz;qS3eP}+2MsK4YTfuX3wIh!9pa5SM{j$=83D=nCCWXy&nNAR4bFxU)ihPnLWWi9 zYT@jv=0ct_IA{b(*I|Eq|4aLHS{*ZPTDN93%2X;#)aOr5XT(@M{qMn+U|@|sQillh zPhT%9mx|a554WcaN_FVb)ETk+dGu5{mWt(OJHJLHUUw=gW^`_+v!E((+ywqq(YHt3 zo7JoHvV;3Z;0Qi{08j#;>{zx41RWKA;m0S)&b*T+6WGD)o8Y!p?B3AdAH7K#wgU<&BcY$^i-m;F+At-GJ!AOA+5aJ$1R&r{Z)XgX23~@GSKSbrfO5c>7t6oC?%NYvDor0H0(Dt zR5AM-O-rZ24;yphxlJy)LsH%w3mC7aoWarU?QIc4z1!rYwe)t$XtB~7?o@BIOcRjB z&I;MYm~oAmx-9zGtj7Qm_?*GE787+jcPz*n<*rI3;a5Xu+A<~Q#(EUov9-NwmOs@o-i$$|=l+}Ya=M+n^9D89YmU{6`tpBMy6Da}Ry`r>@%S6eq# zLM>Bw%=#I-!|8GXn=lTwPcef#r`vYcg`i%M{oC&8d0~H#E63Ax9;e6a6u<0R1J#|1 z#K85fb@j<$d;6~Tumhj_y;AI*Ppr&GwI(|VhospuDFY%a^FYyjh@TiLFoz2d>YKJV z?^7_zzvh`~97|RW-+ulqwJ-@fneE(LDMwzox^Ld^eUyb z9-|DRG%Mp`KhxA=rPDwZU!mzDz2#}4Xx-PQp1NiOhMRd|vK!HkJ6LdRH+O9B$YpuI zkRLEf3rJScV0#oBvuM;)%h`-lT+}AE< z)02&dB{&Gnuxtvki#A~d8SRyOT@?<5bX~Lb`sG+U^W$39(YbjcGBOg&SioSgbJ2qI zmTE+^3WaCwv)at{e0#l1HU^?=T9c+R=M*PP0u9#h$(0`l@2$u?UHL@&SZA+ejS$7! zt}moVbLpTz7>v?fnnGSI$Z}+QNAK?vtJzngN3P+-&d+^YqCh#?j2iRQFm!J+dq^;P z;oA!!GAt^=*OzQ;z0Z;U=Cvs2!bzTMHs9y*g?#&9Z|x|9xfoK>+hBq|k>?Op*3ga9 zq?>2ueXRS(eB|}|`bOtVCoG$6Ojm&)NSSYpz)Wk*O@XZefQ{DK}cTSgEC$@7oDC!MEYlnmeY*IIUPOs3N z*ZgGQfq}vu#uz*|^1&4Y!2JiRfO@F1i~|l#Eb;Jclsk-XDZJSVXM?k&XCKUp=AszG zez*u@*llVpj~vI=lum0^(L1Xqmof;#{Y3vQJGf=r)Tc&6@u1tOca)y0x*!;|#M-K_ zsK>ff9dKsl+?=1-&WRpYSw0w8_}m#->=0gFQ`hFsP0VM4=9tcsVI;*eiXzLZriUZU z<||jKq=8$Qzjz=6B{d^_8?hOjrBDa0qF?mgqGs)p)?+s6MtP*tbK5^mlk2DOc{P~$ z6I_6HQ>mAnZGj78L+->7JI?uDEo8(?V%W+=xCs3ROt+kHPco+47eT3WmAW0&1-Xcw zK~GTdG+xT--?fF)+|?r{En9@u!4eXUb+qJ?X9vYt>Ft)y=%P@DVGuXCwhi!M4qRGx zS$-dU?d?BaR#ao%C^nr}%Z-#G6hSs>o3?ARXu&*`Z|j#Sj}OK9H98!KwG3sP$SBQa z1%{}fQ<&`$r(L5;m5uLMx|1TqanAw?#qB}Y>a0sCW<>mHvyQEB`Ap{OY-HaF!c z|9yuP)ryvg59?F%%{EqiR2<4q zKZGH=$Nz>;UQl-Vmmg%Ot6fSP!aFgBm>Zj(5LsphfQRY{D)W4|N{!p9O_7P;>P<;S z#|i%j^Z4BwC%9|7)DjSFoIJxenT%{SmE%iWl^0Pca;Aj3E1<%(dCP`Ua&q}99=JP@ zd>bmH?Hp=y`hN~!r$aL06GBr8|9dGvn8CL&p(WXH4Vur9dzp}nfquN1KMX zO0M>vK|ukY_AV+OzGSi=$;Z=49)m>5psh(s-pMt~`1b)LN~N*PPT-o1Rc7B->z-m6 zZOo|Hv!~#nH*?46zyge-jB@|8@TdJHMM%|cOLr9$VaIB>dz!-nZG^1%tKp{JuPE8X zsvMR|I*mFX7x1AoSGqMj9z@1R{FZKwbJoA2i(NBUE=M2LMM-&r)*@g?uM~jpz`W%6 zAPpDu+MyOKg(w{KjZ?gbMiQ`@{xS8<22%0rfd$vzaI58Ln^o-&_i z?8hOMUhU^QO@pL9qGL2+9TCN_J+>I0^od$#WqJZZ< zW~l^f7W?5yTz~^`U?~4O4ShzC9G{_R$D=IpiRnVd=%UQATb}Rf15z2rf?(_gDF_E^ zq)UOjOSM|lU{Qahb#?AId1bX#>|0IS08`3jjAiS zuO9ZCerBoNUs%dP$HGoeLVAt(HBpe$Z8<*|EhveM1~O7n)==ys*PN3rh_-isY3oL} zf821dTf&Y&4v@(a3dF=5k1>1fqOd>ocj&JyP)tp zFm2oHH+;BK>tXW~P|?xOBYYk`{A7N5JNSQP?N?&(@75`NMGj{BbykW-=EF3^`1;iq zNg&=Ow-l!y*S@}tW+?Dxe!$67@atpPOhqPwZ}_d{+}|!_oFmhr^8iVb5q0@OD3VU4 z2i!)HP^i#r%r=9nTOIV)k=&<9q}S0qS>CEnVFK(}&v8m=n?O1_P9;5w5EO1>w^7o; zPAY7bFpAuG?mX(*Frp}LBq@409N`%f=JQiy2}KlfrF6L{J82BV(0o)!H}*;)KwFFw z>S9J+!6K5swqCK`EBspzE|dbsV4m9mlGy74rq8lu$9Gro4PT=<++bkZScxy|x52+J zLKz=OoIVhNBzz#jfCO2`9(u|&{OZcl1iyKY3tL>EF$rk{t{@zc8m}N)t6$IhjwGa!Te1=R{9$X6sQ3EFl`;(=ICU;;DX)n{fQpZtBtGv@EoKhdZs zLu804W>EsB$Vc+=NfbUo1hGOLK-a<<1~h1$i3i3^^_AQME& zq12Ejia1>f$Nu@F;>%Px&Z@wo8o9y@5?bLGVZ9J$i>?DSi03e z>L@v|f!y}FJ<4`iy}hL4w0ot0QpV=@RftRbCJ6J3M++Vh%3D&_o{s$ zQ#}j-k6x3&^e~J&+5Z&$qEI`Tn4uhA((t{e76<(!)&4jOqGXj~(GKazMM0-inHog3 zTGlFAOXW`GjD{8v!jb%NQ8i*8TUicS(=u=Tc+?s+)6%eTV<0*=i?24G} zPFc~bMb2kCmJ|Fy<;f%L_u?;XoxAiyk8*s~H}dP1{l0kZJ$HH%pa5G2MI!K>Kz`~B z(9oD?vet2EaOMG-C98%Msp#du@Xjp#`=;H2PzV9w|1~x?5vSF85+_*TPRE?fELf)& ze1Amf9RGe)C3zIoN&jd`G`*p^oqh#C}yT$G6(2H($`4;LKLFliPj(I=cmyks5 zu4S1{V74qU7?71_tO-F#4eUReE4^iJHe4rM{c-Pwf$u*1)eGi)XL1kn`Gpy%?+3Xo z+{V=2K4zff`QThO{({{nFkFuy$jQT(%}?>~bgTY>b4TLD##U95CM?(_n_y{EfFqom z#B{AL`+S~eNFPbN_9(RJB=MC$dUt9lzGuH9^cN^q*t=IfP*Wd%3*;Y$ARrOWo2V)D^WIB(= zqq`KmLm=v#W}ZBcC4Bj`9xvvi1{lN*^XaW*x1UB>(xB(rVey}E@xBlN^CW~Q3^5`Y zTSU@`rYJrIO$YRemb-@Iy-?E@?KYd|MAjdw=8mje*>rXh#it;_TL68ch@Y^T_d&RP z89e#5D)uvQ+ZEQU-#jPt)!_5DacB`Md_M>iMlw#$Pn`}A@`%E@0#re;G>K@Uvn+Ut z^i5&JQih=mlt7oM073~63}Po7jX?}n!w((T-_+y&DEzRv2(J;0p=;brywSu!ES0SL zLOH~Avb&<_eI}+9ZX}1KfY?}qmmk;dT&McparV?wu}j?;wUznNJU4Sk)q$n+8gZAT z%Me>}P3-_)NJah`wnG*()N>GNMWun^$2&TWyjwM;2?}2l*dhx^db8kX6NXke4=wz| z8ro@I#^(`PSfo8j0Jh+-#WTp|*x-IbP@|76*n}MZVvh{U+5{vCFj9-musU)5dBL9X zg?$FF4W37~GKT2Xn_pV5WzZCo9NDNZh$ATlr^J>0AR?hPUx+Xw_fl-MFfe5$kBBj3 z1SKwdYaJ%}Sa5jOD7HZ!&FTqJ;5c_qdn{KNLBw0Duq-c-d&zFRw-JaHQ)oWeVSiQj zU&0ab$v+Ycu(o;X^OJc?Bm9K<$j_m`M=`YIKt}Qr5|SnI8FC|elsrv>Wac&A9}9>M z&dkw6x`cC^%|hcd1!|#J_mm(D>lJ&UtRaP4K4;ALndi8A&$6qSsh0!OkUnVT_c4*n zFHUBt>S8a|f#+%$o}CeEWi>k6u5S;Bytt!mp76`Nphgtl*bv!#AFiuCdfT?Y>InSe z(_{ba>e>djGX)jRHuT7xE0oIlCvUd&4e&3H0~OR;6j;MAFg>bw+=*V$SGum&Ue%J8 zqeaUON82_j%fiIzj%aKLA4OsBsOAD^+;HP*7gpXJ6zjkksjg8G<&6dH_iU4q^bG)) z5cYWQ->$3&!$h$V%dsmKV&O26hpvk~kNQ%GfHUeL$T=m%!)W9ck8)iKBtv7OcT7Mo zd16~mDP|N7u!OQeE_K?}lgj7HOd@{H@~A&)L^iEoBA(wgnffWRbTJ-Dj3idcV+;z9 zr7qLGZWNN$GJ;*17&RJ}fy5O#(25V3IWu zg1|BiMd~0hVMH+;?+s&`W>{|I6_4`jt%XQVg(kuwI25Pj5FFCIc-}w|_F79 zm+-zj)>k#hYFwo*(8M2S4rM z$L0ofW^v`F;JG?lAfWpPJ_od*;W>=7Lx*lv^1CTg;`ytFH#xTLFcwxx(wB9ey)JCh zZ(R9l54iY!wF7@5@D@uDxgUE1O}e5}rQKJWrx*IxrlGnAHbyp%JT6k6(GBa< z28V1tTrmfG#CS1ZV*fA+Sg=%12}&TUk4Zogs7OzKd#u2Qpd>2+Js>SS+AEd0aFBJ% za6Y8StT*Chm8YTVqXbC{X!x)aj7{=1Ep2Ud|gm(PE zvrGdLWa~Y}aiHsJtF6`5j?H9Fg#g=~u7ZI-SS#uWfgFSBXB?S&R%_kRR@#x8C$la1 z(#(9UAr+S={mgP55*6t(@yKrQxFMIH+yQ%k{;Te^PDa+f)s;Gw?VZ`9vfghFd3Lt7 zd*BhcQDnOm5fTbiMR6&T496vDIs z2YdICGC=N$VpRnmciQg2#xCb_hrDLj-Q|o^2aFJK<&gL>#mu@Up6|!u_{LAFL0iRH zHBx$A=6Nyl!FyMS0VPBv`Kaq=z!p0(C?V`njA^#11JPtUYn3XRu@Gs670wA%J1=Wd zBn1_YYP2a?A7K{!Db}Sda10rQb9srWQ5MnU=%Qgd$j*5F}noVa}Ej>>#{SNC}VJ1AD5fX}S(Ul0~Xfhvx#2n}{L) zy7ROyvG~Le4#X*|<&RIkuWgcSYP>&Gh0H+pUaq=fRt8`w;w>t*eY4}Cfde;@pJi!E zEIl4&bMDfDz_HFSB8YGUSqwW@bPf<0NTG-@!lP0rr{kTbC6S6O(_`%}7z|1ls6D|< zv9Sj9oUzozEX#}VtEKHGMCr`iY`Dd~`aRTfbQYKsL>?&C_va!>=h+cJqA&gxdM!Lz z4X>RQnzQ<&WEGS=RSyp3?m^sCRX<$w_W6 z%LI1<_C?SZUkJ(5l0Z;p&^fvDmz2X;m4^vO`dV=7CLWH~6xW{&4Y+(UYo~!_OyHC^ z_-I%-xxj8~{2gWOSglvy*88lIAE)6yQuK}-%6b15U|ky19X3_e@7fsR@_v?K&Eh-Q z)eNSq_F5{HT)=&MZeF9^X)@MoYT?Q6p4^E1s^(cw|L`3?-@4>E>hSx)e+Rkhd_Vmu zNgQpd@J8>{i1>*k5O^Y%m}P+(Tzy@#*rtF}oi0olDPrl&tx5`Vp8}7vZyimKG3cVw zL$gla0_*OoIY8j1s90DU8}pPBt#Ey8(&MCD-w$oe)-QdQ#WcTlI)7<)rk>XD?zzid zxMf(Aw;R;J6B}*%xT|j5j~L%|DercyvxAgjz!V5%l%`2ojf4!uV^zt0e>5SUbSjSg zz+so?!*NC^0WHahhxCjs`V=FkIAU=z$&6ejd-LGD6Z|ihdhvx&xf%$}nX+rVZ^wXh z9%Q5dxDX?S)nFai$Er>nGx`uuDq}Epdv+=R+N4z(S};p?co+wvj`ML44pJ#PF5!&W znnigSQfNC4Jm^UT#8n`4xwS~$-334MAeKT!F%Mic2pQ*MRFqOMf+?Cahna#Y4TN(R z2{BPFm1LBWGR2G!6DTQI&$*J<{XN;W*2dZLQzm{F%a;DCiA?2e5%)5MuUiU#-05Ab zuB3C=Yk%st#i!{yrF++Yv0o=Rg-0?j6H>`cR#Y^Pd%Q0KlR76@469( zLhsPUku)$k?6`wxc89r$vs_z95G-`C(~jOc>nT)Z=A;!hLpjtM#dp$@##vBlO~-$| zcNV<^SLNc2N(*~-94y63e{mLBj1rSF-V3Vfr- zkO-la5SkTV9E^+%HBn37k3AvA=%Z6MC?y*{@E5OC!WcM^hq47zexC!2m*wyo4#kzP zcyGX+N?FsTppIobw(TH9D02sgySR6~GVg1a4KZ}CceaU&%jY%?3I(jcX>;}4`bFw!D9 zF(ft(iGZ(7rrd!A8@`ta;$XWpQ(C*oF6BYsrTGwD5tz%JWY%31K9CK>0UNu1Pm+7MU8}BFBL+bkQVQ&8UcEQ|(kGG#gn66-qYbf?K4(y;XqDW%L7De_sD>g8f{E-UH@iWk zB3f=7hER}{z&sHwl65CzNs1CcNP-cBs>PKFRz%A9d@~Z5;Za(5Fbvagvy1OU_!$ z1EK4n7!MKlKr#ds29)z$V>+GDb3e`Z*8M*gTbSbpzO{&mWCwMVn8XE#!4bHNEZ{;M zwG#!mwW~8ud z;^YxKvBS#1PK&@Nqa$crJV20!pcQXD`!}jtVI+m!Tx=a(XU3-E?ss3{x@a%NrBnaK z=?MkC@Ck}E9NMEiTNFXvNw(w?KXJvCF+P+c0OJx=4hnC>g=av411X`ygrXw=1s9B6 z(L&HHO+whtg$};LvJ7p~x8%G5&kG{Q{|{Q;IuI$!Xn!bOE-%~HA{ywpTr?EfY$z{D(z(vq3K0O$1gnBWPFe~dkYrd&-wj9@ zNoagw8TeeJOoa%;{OTD^K4PL=3Wpp<@5*zs;PW0bH-<~2k)lAD%WEH=JbnAc&FOCb z(8(K*Ui@-U4Bhr*etMv*sj;G>b?)-Nq{Tib%^y$aTkYw{sl}U3WB}CF3lBiVBZpkw zwSM1PMMZDrMmLG|wb|L*?;$fySNo}Nvr$wo<>XmCxZtDS12J*d-eAqSxlOdzpOX=c zN#9%>R!A~U85@5`B*3QS_66%Og08DIfm~gQ9Av1eb;ZJC`}iIU5fK3%^mKL9O6(UA z9ko(@eHK0gdaY!3PyXQ)<{X$jY1EclPI)r$^Sw9ag@S1rI~?~QwrcN+@p-ok`>9=e zL`q?t>_ZUhoEIM`sm*5qpYrg&-4YQ3);jm^&f|v6XEl1vXH-b{C11pG_&6EGGO`UX z+ohtEkX)`DifpEqm$>*v#$izcCxNy#j4>hQ49n0|T%y_P9QO|C9nu>=H6jp11ZeCO z66Y1|Fh$Bm)^k{DqY1Q$jFPoUkZ%$F!wa~ypSfY#z80P2V~roB zOfc4IP4(!KS3kc8qvlgxKIQTbR zOT}MYU!)uR2YIp2w>)udmT#WEhdB0j^CgYC;@}th@pGLKkNK$>hbJXTRYqZ!ft)3L zUdoCTnh6U-Zyb|F%9a;v zo5o5#YW4os_6DUDPgB%sN5Jv?9BEYIQxNsdH2&T?#3xBHp|@}nRvMx0@?6VBh6NqM z15@poF35RALF4hC@zlIm%~E(VOE=1eO(JBrCHh@0!J}yiVaZKW#ol}IK9(Xs<5Jm7 zq8B@WP-~%w#Uk&5wIdz zE6aKV{Mj(%-Su*?Rx|;^-YlgwWO~aIT`0XP{bXVvy^h@V0T!TPgQ$r)gPUkzw|@Jw|_~MW)SPC z+|^E+7yi>S{gtRejd`*8 z#rU#r_WFI{fYs2{H_X#|Rk9lpB_uL8yZa{(Yf0*&1$%#EJQG3SyfyRHn=rn$K!^|~ zl=f~e`0E(Mo@2Yx31EPGCsvx%#f!M(a+XC_{c?(2eL1WH8-|gOW(+h>zRC%sB!n{` ztYOHSnzdYpyjsj?pyk_1igcH(U(&U1r)yZI+EY(_ZJWtq8?PO8Aab^aob7t^-YBCXks#y)@`Z3<`ScqP2S_A$F@6>bL)-u_a0!{3`s zI=~3_PLaK&f=_1#_db>L!FTafBBfpqJM4*~KECd>w|39}9f@!tAEwvE@HEZs*hH?&V$! z@Y)Y@jJ=;_yWO~XC2xE|pF8tXGD=^{=W;v{HDC^4n73%d0I}o`$>azDWx`YXaX|r6 zMxL3ce?fJTsY0{A~{dJ|r#Mu%QK33&sb zxb*a5&C$ZsJCCXRS*_fmoJ5qA=j)KiDDSy4e}nPfnN%9x)Bu8=4YcH19Kl<{36MFn zWL&*Ssyye`d;vSO76PjwRflz{4E=6ODpy-qG4MXrhyw$1@}*F6;!D}r+pkcEcR8** z`7_j9tH*K=Cb$oELin*t6xxmV&=KvA~{IhUgP z%4$twuGCx7=&9Jk6;m9K>T~QthVjDlJZ&cWtE44@x0kdzQ)>A%za0fddze6tZr}M8 zx!E6sd@7-thgI$`vD!NoG?x}>cIhjyF6%TEB*%7bsHdp@>v8_Nvc{kx;zC5}olY%ZN#5g>{)$4c) zRV0y|79qz*rag9>5{UO<|Nik?bd8;ZEJ=6G?#M@gxF^z)HrqiwYTrY&1Pm$7P6Qzh zNckRYrAZczxGTz0ibhECc$9d%<1|o`Z_g1WsY#me9-kSb@byT=K9A|B`sdD$we1~8 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�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

l(X_I+GK&R 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 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 G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/assets/pubs_index.md.DjeH4wTt.js b/assets/pubs_index.md.DjeH4wTt.js new file mode 100644 index 0000000..eabcf06 --- /dev/null +++ b/assets/pubs_index.md.DjeH4wTt.js @@ -0,0 +1 @@ +import{d as n,c as s,j as i,a as o,G as l,k as r,B as p,o as u}from"./chunks/framework.BnE-uSbk.js";const t={name:"Tesla Zhang",link:"https://ice1000.org"},c=[{type:"Papers",items:[{title:"A simpler encoding of indexed types",venue:"TyDe 2021",authors:[t],links:[["arxiv","2103.15408"],["doi","10.1145/3471875.3472991"]]}]},{type:"Notes",items:[{title:"(Co)conditions hit the path",authors:[t],links:[["arxiv","2405.12994"]]},{title:"Two tricks to trivialize higher-indexed families",authors:[t],links:[["arxiv","2309.14187"]]},{title:"A tutorial on implementing De Morgan cubical type theory",authors:[t],links:[["arxiv","2210.08232"]]},{title:"Elegant elaboration with function invocation",authors:[t],links:[["arxiv","2105.14840"]]}]}],x=JSON.parse('{"title":"Publications","description":"","frontmatter":{},"headers":[],"relativePath":"pubs/index.md","filePath":"pubs/index.md","lastUpdated":1716592923000}'),d={name:"pubs/index.md"},f=n({...d,setup(h){return(m,e)=>{const a=p("Publications");return u(),s("div",null,[e[0]||(e[0]=i("h1",{id:"publications",tabindex:"-1"},[o("Publications "),i("a",{class:"header-anchor",href:"#publications","aria-label":'Permalink to "Publications"'},"​")],-1)),e[1]||(e[1]=i("p",null,"This is a list of publications related to Aya by the Aya developers.",-1)),l(a,{pubs:r(c)},null,8,["pubs"])])}}});export{x as __pageData,f as default}; diff --git a/assets/pubs_index.md.DjeH4wTt.lean.js b/assets/pubs_index.md.DjeH4wTt.lean.js new file mode 100644 index 0000000..eabcf06 --- /dev/null +++ b/assets/pubs_index.md.DjeH4wTt.lean.js @@ -0,0 +1 @@ +import{d as n,c as s,j as i,a as o,G as l,k as r,B as p,o as u}from"./chunks/framework.BnE-uSbk.js";const t={name:"Tesla Zhang",link:"https://ice1000.org"},c=[{type:"Papers",items:[{title:"A simpler encoding of indexed types",venue:"TyDe 2021",authors:[t],links:[["arxiv","2103.15408"],["doi","10.1145/3471875.3472991"]]}]},{type:"Notes",items:[{title:"(Co)conditions hit the path",authors:[t],links:[["arxiv","2405.12994"]]},{title:"Two tricks to trivialize higher-indexed families",authors:[t],links:[["arxiv","2309.14187"]]},{title:"A tutorial on implementing De Morgan cubical type theory",authors:[t],links:[["arxiv","2210.08232"]]},{title:"Elegant elaboration with function invocation",authors:[t],links:[["arxiv","2105.14840"]]}]}],x=JSON.parse('{"title":"Publications","description":"","frontmatter":{},"headers":[],"relativePath":"pubs/index.md","filePath":"pubs/index.md","lastUpdated":1716592923000}'),d={name:"pubs/index.md"},f=n({...d,setup(h){return(m,e)=>{const a=p("Publications");return u(),s("div",null,[e[0]||(e[0]=i("h1",{id:"publications",tabindex:"-1"},[o("Publications "),i("a",{class:"header-anchor",href:"#publications","aria-label":'Permalink to "Publications"'},"​")],-1)),e[1]||(e[1]=i("p",null,"This is a list of publications related to Aya by the Aya developers.",-1)),l(a,{pubs:r(c)},null,8,["pubs"])])}}});export{x as __pageData,f as default}; diff --git a/assets/style.CZ1NuL7E.css b/assets/style.CZ1NuL7E.css new file mode 100644 index 0000000..6e87d87 --- /dev/null +++ b/assets/style.CZ1NuL7E.css @@ -0,0 +1 @@ +.Aya a,.Aya a:hover{text-decoration-line:none;text-decoration-color:inherit;text-underline-position:inherit}:root{--Doc-Term-Highlight-BackgroundColor: #B4EEB4}.Aya a[href]:hover,.Aya [href].hover-highlight{background-color:var(--Doc-Term-Highlight-BackgroundColor)}:root{--Doc-Hover-BackgroundColor: rgba(18, 26, 44, .8);--Doc-Hover-TextColor: #fff;--Doc-Hover-BoxShadowColor: rgba(0, 0, 0, .1)}.Aya .aya-hover{position:relative;cursor:pointer}.Aya [aya-hover-text]:after{content:attr(aya-hover-text);visibility:hidden;position:absolute;top:0;left:0;transform:translateY(-110%);white-space:pre;padding:5px 10px;background-color:var(--Doc-Hover-BackgroundColor);color:var(--Doc-Hover-TextColor);box-shadow:1px 1px 14px var(--Doc-Hover-BoxShadowColor)}.Aya .aya-hover:hover:after{transform:translateY(-110%);visibility:visible;display:block}:root{--Doc-Tooltip-BackgroundColor: #f6f6f7;--Doc-Tooltip-TextColor: #3c3c43;--Doc-Tooltip-BoxShadowColor: rgba(0, 0, 255, .2);--Doc-Tooltip-BorderColor: #333}.AyaTooltipPopup{position:absolute;z-index:100;font-size:.85em;padding:4px 8px;background-color:var(--Doc-Tooltip-BackgroundColor);color:var(--Doc-Tooltip-TextColor);box-shadow:1px 1px 20px 1px var(--Doc-Tooltip-BoxShadowColor);border:2px solid var(--Doc-Tooltip-BorderColor)}.AyaTooltipPopup #AyaTooltipPopupClose{float:right;display:inline-block;padding:0 5px;margin:-4px -8px;visibility:hidden;background-color:var(--Doc-Tooltip-BackgroundColor)}.AyaTooltipPopup #AyaTooltipPopupClose:hover{color:red}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-56304577]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-56304577],.VPBackdrop.fade-leave-to[data-v-56304577]{opacity:0}.VPBackdrop.fade-leave-active[data-v-56304577]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-56304577]{display:none}}.NotFound[data-v-e885b82e]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-e885b82e]{padding:96px 32px 168px}}.code[data-v-e885b82e]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-e885b82e]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-e885b82e]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-e885b82e]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-e885b82e]{padding-top:20px}.link[data-v-e885b82e]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-e885b82e]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-438521a0]{position:relative;z-index:1}.nested[data-v-438521a0]{padding-right:16px;padding-left:16px}.outline-link[data-v-438521a0]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-438521a0]:hover,.outline-link.active[data-v-438521a0]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-438521a0]{padding-left:13px}.VPDocAsideOutline[data-v-3598c0c0]{display:none}.VPDocAsideOutline.has-outline[data-v-3598c0c0]{display:block}.content[data-v-3598c0c0]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-3598c0c0]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-3598c0c0]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-0642dfdb]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-0642dfdb]{flex-grow:1}.VPDocAside[data-v-0642dfdb] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-0642dfdb] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-0642dfdb] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-de6040cf]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-de6040cf]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-df54bf16]{margin-top:64px}.edit-info[data-v-df54bf16]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-df54bf16]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-df54bf16]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-df54bf16]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-df54bf16]{margin-right:8px}.prev-next[data-v-df54bf16]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-df54bf16]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-df54bf16]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-df54bf16]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-df54bf16]{margin-left:auto;text-align:right}.desc[data-v-df54bf16]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-df54bf16]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-bda83294]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-bda83294]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-bda83294]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-bda83294]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-bda83294]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-bda83294]{display:flex;justify-content:center}.VPDoc .aside[data-v-bda83294]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-bda83294]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-bda83294]{max-width:1104px}}.container[data-v-bda83294]{margin:0 auto;width:100%}.aside[data-v-bda83294]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-bda83294]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-bda83294]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-bda83294]::-webkit-scrollbar{display:none}.aside-curtain[data-v-bda83294]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-bda83294]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-bda83294]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-bda83294]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-bda83294]{order:1;margin:0;min-width:640px}}.content-container[data-v-bda83294]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-bda83294]{max-width:688px}.VPButton[data-v-cd85e10a]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cd85e10a]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cd85e10a]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cd85e10a]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cd85e10a]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cd85e10a]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cd85e10a]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cd85e10a]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cd85e10a]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cd85e10a]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cd85e10a]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cd85e10a]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cd85e10a]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-c39f99d1]{display:none}.dark .VPImage.light[data-v-c39f99d1]{display:none}.VPHero[data-v-894dba19]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-894dba19]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-894dba19]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-894dba19]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-894dba19]{flex-direction:row}}.main[data-v-894dba19]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-894dba19]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-894dba19]{text-align:left}}@media (min-width: 960px){.main[data-v-894dba19]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-894dba19]{max-width:592px}}.name[data-v-894dba19],.text[data-v-894dba19]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-894dba19],.VPHero.has-image .text[data-v-894dba19]{margin:0 auto}.name[data-v-894dba19]{color:var(--vp-home-hero-name-color)}.clip[data-v-894dba19]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-894dba19],.text[data-v-894dba19]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-894dba19],.text[data-v-894dba19]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-894dba19],.VPHero.has-image .text[data-v-894dba19]{margin:0}}.tagline[data-v-894dba19]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-894dba19]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-894dba19]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-894dba19]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-894dba19]{margin:0}}.actions[data-v-894dba19]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-894dba19]{justify-content:center}@media (min-width: 640px){.actions[data-v-894dba19]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-894dba19]{justify-content:flex-start}}.action[data-v-894dba19]{flex-shrink:0;padding:6px}.image[data-v-894dba19]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-894dba19]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-894dba19]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-894dba19]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-894dba19]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-894dba19]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-894dba19]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-894dba19]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-894dba19]{width:320px;height:320px}}[data-v-894dba19] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-894dba19] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-894dba19] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f4124de3]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f4124de3]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f4124de3]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f4124de3]>.VPImage{margin-bottom:20px}.icon[data-v-f4124de3]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f4124de3]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f4124de3]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f4124de3]{padding-top:8px}.link-text-value[data-v-f4124de3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f4124de3]{margin-left:6px}.VPFeatures[data-v-e2562975]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-e2562975]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-e2562975]{padding:0 64px}}.container[data-v-e2562975]{margin:0 auto;max-width:1152px}.items[data-v-e2562975]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-e2562975]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-e2562975],.item.grid-4[data-v-e2562975],.item.grid-6[data-v-e2562975]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-e2562975],.item.grid-4[data-v-e2562975]{width:50%}.item.grid-3[data-v-e2562975],.item.grid-6[data-v-e2562975]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-e2562975]{width:25%}}.container[data-v-7f03820f]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7f03820f]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7f03820f]{width:100%;padding:0 64px}}.vp-doc[data-v-7f03820f] .VPHomeSponsors,.vp-doc[data-v-7f03820f] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7f03820f] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7f03820f] .VPHomeSponsors a,.vp-doc[data-v-7f03820f] .VPTeamPage a{text-decoration:none}.VPHome[data-v-2885c995]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-2885c995]{margin-bottom:128px}}.VPContent[data-v-c393ce4c]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-c393ce4c]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-c393ce4c]{margin:0}@media (min-width: 960px){.VPContent[data-v-c393ce4c]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-c393ce4c]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-c393ce4c]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c0e892f2]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c0e892f2]{display:none}.VPFooter[data-v-c0e892f2] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c0e892f2] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c0e892f2]{padding:32px}}.container[data-v-c0e892f2]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c0e892f2],.copyright[data-v-c0e892f2]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bd0d7a9d]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bd0d7a9d]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bd0d7a9d]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bd0d7a9d]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bd0d7a9d]{color:var(--vp-c-text-1)}.icon[data-v-bd0d7a9d]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bd0d7a9d]{font-size:14px}.icon[data-v-bd0d7a9d]{font-size:16px}}.open>.icon[data-v-bd0d7a9d]{transform:rotate(90deg)}.items[data-v-bd0d7a9d]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bd0d7a9d]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bd0d7a9d]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bd0d7a9d]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bd0d7a9d]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bd0d7a9d]{transition:all .2s ease-out}.flyout-leave-active[data-v-bd0d7a9d]{transition:all .15s ease-in}.flyout-enter-from[data-v-bd0d7a9d],.flyout-leave-to[data-v-bd0d7a9d]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2d19ae34]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2d19ae34]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2d19ae34]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2d19ae34]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2d19ae34]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2d19ae34]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2d19ae34]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2d19ae34]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2d19ae34]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-2d19ae34]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2d19ae34]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2d19ae34]{display:none}}.menu-icon[data-v-2d19ae34]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2d19ae34]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2d19ae34]{padding:12px 32px 11px}}.VPSwitch[data-v-4cbccd3d]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4cbccd3d]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4cbccd3d]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4cbccd3d]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4cbccd3d] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4cbccd3d] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-f05ee76d]{opacity:1}.moon[data-v-f05ee76d],.dark .sun[data-v-f05ee76d]{opacity:0}.dark .moon[data-v-f05ee76d]{opacity:1}.dark .VPSwitchAppearance[data-v-f05ee76d] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-4a283ace]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-4a283ace]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-c2bd4b6a]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-c2bd4b6a]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-c2bd4b6a]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-c2bd4b6a]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-6a016bef]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-6a016bef]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-6a016bef]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-6a016bef]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-24137c6b]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-24137c6b] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-24137c6b] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-24137c6b] .group:last-child{padding-bottom:0}.VPMenu[data-v-24137c6b] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-24137c6b] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-24137c6b] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-24137c6b] .action{padding-left:24px}.VPFlyout[data-v-e9b4f5ec]{position:relative}.VPFlyout[data-v-e9b4f5ec]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e9b4f5ec]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e9b4f5ec]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e9b4f5ec]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e9b4f5ec]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e9b4f5ec],.button[aria-expanded=true]+.menu[data-v-e9b4f5ec]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e9b4f5ec]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e9b4f5ec]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e9b4f5ec]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e9b4f5ec]{margin-right:0;font-size:16px}.text-icon[data-v-e9b4f5ec]{margin-left:4px;font-size:14px}.icon[data-v-e9b4f5ec]{font-size:20px;transition:fill .25s}.menu[data-v-e9b4f5ec]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-92fc0818]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-92fc0818]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-92fc0818]>svg,.VPSocialLink[data-v-92fc0818]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e6305f9c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-5343c639]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-5343c639]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-5343c639]{display:none}}.trans-title[data-v-5343c639]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-5343c639],.item.social-links[data-v-5343c639]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-5343c639]{min-width:176px}.appearance-action[data-v-5343c639]{margin-right:-2px}.social-links-list[data-v-5343c639]{margin:-4px -8px}.VPNavBarHamburger[data-v-4b339e23]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-4b339e23]{display:none}}.container[data-v-4b339e23]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-4b339e23]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-4b339e23]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-4b339e23]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-4b339e23]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-4b339e23]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-4b339e23]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-4b339e23],.VPNavBarHamburger.active:hover .middle[data-v-4b339e23],.VPNavBarHamburger.active:hover .bottom[data-v-4b339e23]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-4b339e23],.middle[data-v-4b339e23],.bottom[data-v-4b339e23]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-4b339e23]{top:0;left:0;transform:translate(0)}.middle[data-v-4b339e23]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-4b339e23]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-8c75cb77]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-8c75cb77],.VPNavBarMenuLink[data-v-8c75cb77]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-048e1dbd]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-048e1dbd]{display:flex}}/*! @docsearch/css 3.6.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-94ff375c]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-94ff375c]{display:flex;align-items:center}}.title[data-v-7a924078]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-7a924078]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-7a924078]{border-bottom-color:var(--vp-c-divider)}}[data-v-7a924078] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-711929df]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-711929df]{display:flex;align-items:center}}.title[data-v-711929df]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-07662647]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-07662647]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-07662647]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-07662647]:not(.home){background-color:transparent}.VPNavBar[data-v-07662647]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-07662647]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-07662647]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-07662647]{padding:0}}.container[data-v-07662647]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-07662647],.container>.content[data-v-07662647]{pointer-events:none}.container[data-v-07662647] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-07662647]{max-width:100%}}.title[data-v-07662647]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-07662647]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-07662647]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-07662647]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-07662647]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-07662647]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-07662647]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-07662647]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-07662647]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-07662647]{column-gap:.5rem}}.menu+.translations[data-v-07662647]:before,.menu+.appearance[data-v-07662647]:before,.menu+.social-links[data-v-07662647]:before,.translations+.appearance[data-v-07662647]:before,.appearance+.social-links[data-v-07662647]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-07662647]:before,.translations+.appearance[data-v-07662647]:before{margin-right:16px}.appearance+.social-links[data-v-07662647]:before{margin-left:16px}.social-links[data-v-07662647]{margin-right:-8px}.divider[data-v-07662647]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-07662647]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-07662647]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-07662647]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-07662647]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-07662647]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-07662647]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-1184bba9]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-1184bba9]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-887c01d7]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-887c01d7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-ac505d70]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-ac505d70]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-2342a2c8]{display:block}.title[data-v-2342a2c8]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-500ca7be]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-500ca7be]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-500ca7be]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-500ca7be]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-500ca7be]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-500ca7be]{transform:rotate(45deg)}.button[data-v-500ca7be]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-500ca7be]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-500ca7be]{transition:transform .25s}.group[data-v-500ca7be]:first-child{padding-top:0}.group+.group[data-v-500ca7be],.group+.item[data-v-500ca7be]{padding-top:4px}.VPNavScreenTranslations[data-v-be6f93b3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-be6f93b3]{height:auto}.title[data-v-be6f93b3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-be6f93b3]{font-size:16px}.icon.lang[data-v-be6f93b3]{margin-right:8px}.icon.chevron[data-v-be6f93b3]{margin-left:4px}.list[data-v-be6f93b3]{padding:4px 0 0 24px}.link[data-v-be6f93b3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-4b67b75c]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-4b67b75c],.VPNavScreen.fade-leave-active[data-v-4b67b75c]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-4b67b75c],.VPNavScreen.fade-leave-active .container[data-v-4b67b75c]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-4b67b75c],.VPNavScreen.fade-leave-to[data-v-4b67b75c]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-4b67b75c],.VPNavScreen.fade-leave-to .container[data-v-4b67b75c]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-4b67b75c]{display:none}}.container[data-v-4b67b75c]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-4b67b75c],.menu+.appearance[data-v-4b67b75c],.translations+.appearance[data-v-4b67b75c]{margin-top:24px}.menu+.social-links[data-v-4b67b75c]{margin-top:16px}.appearance+.social-links[data-v-4b67b75c]{margin-top:16px}.VPNav[data-v-ee9a087b]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ee9a087b]{position:fixed}}.VPSidebarItem.level-0[data-v-18366d3f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-18366d3f]{padding-bottom:10px}.item[data-v-18366d3f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-18366d3f]{cursor:pointer}.indicator[data-v-18366d3f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-18366d3f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-18366d3f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-18366d3f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-18366d3f]{background-color:var(--vp-c-brand-1)}.link[data-v-18366d3f]{display:flex;align-items:center;flex-grow:1}.text[data-v-18366d3f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-18366d3f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-18366d3f],.VPSidebarItem.level-2 .text[data-v-18366d3f],.VPSidebarItem.level-3 .text[data-v-18366d3f],.VPSidebarItem.level-4 .text[data-v-18366d3f],.VPSidebarItem.level-5 .text[data-v-18366d3f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-18366d3f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-18366d3f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-18366d3f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-18366d3f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-18366d3f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-18366d3f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-18366d3f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-18366d3f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-18366d3f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-18366d3f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-18366d3f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-18366d3f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-18366d3f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-18366d3f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-18366d3f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-18366d3f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-18366d3f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-18366d3f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-18366d3f]{color:var(--vp-c-brand-1)}.caret[data-v-18366d3f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-18366d3f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-18366d3f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-18366d3f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-18366d3f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-18366d3f],.VPSidebarItem.level-2 .items[data-v-18366d3f],.VPSidebarItem.level-3 .items[data-v-18366d3f],.VPSidebarItem.level-4 .items[data-v-18366d3f],.VPSidebarItem.level-5 .items[data-v-18366d3f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-18366d3f]{display:none}.no-transition[data-v-fbf76fa5] .caret-icon{transition:none}.group+.group[data-v-fbf76fa5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-fbf76fa5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-96ab8f77]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-96ab8f77]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-96ab8f77]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-96ab8f77]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-96ab8f77]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-96ab8f77]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-96ab8f77]{outline:0}.VPSkipLink[data-v-5018365e]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-5018365e]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-5018365e]{top:14px;left:16px}}.Layout[data-v-f87af1e9]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3111c05b]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3111c05b]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3111c05b]{margin:128px 0}}.VPHomeSponsors[data-v-3111c05b]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3111c05b]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3111c05b]{padding:0 64px}}.container[data-v-3111c05b]{margin:0 auto;max-width:1152px}.love[data-v-3111c05b]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3111c05b]{display:inline-block}.message[data-v-3111c05b]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3111c05b]{padding-top:32px}.action[data-v-3111c05b]{padding-top:40px;text-align:center}.VPTeamPage[data-v-e46fab8d]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-e46fab8d]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-e46fab8d-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-e46fab8d-s],.VPTeamMembers+.VPTeamPageSection[data-v-e46fab8d-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-e46fab8d-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-e46fab8d-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-e46fab8d-s],.VPTeamMembers+.VPTeamPageSection[data-v-e46fab8d-s]{margin-top:96px}}.VPTeamMembers[data-v-e46fab8d-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-e46fab8d-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-e46fab8d-s]{padding:0 64px}}.VPTeamPageTitle[data-v-9b0b0565]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-9b0b0565]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-9b0b0565]{padding:80px 64px 48px}}.title[data-v-9b0b0565]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-9b0b0565]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-9b0b0565]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-9b0b0565]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-974ea19b]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-974ea19b]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-974ea19b]{padding:0 64px}}.title[data-v-974ea19b]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-974ea19b]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-974ea19b]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-974ea19b]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-974ea19b]{padding-top:40px}.VPTeamMembersItem[data-v-d5e84095]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-d5e84095]{padding:32px}.VPTeamMembersItem.small .data[data-v-d5e84095]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-d5e84095]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-d5e84095]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-d5e84095]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-d5e84095]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-d5e84095]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-d5e84095]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-d5e84095]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-d5e84095]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-d5e84095]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-d5e84095]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-d5e84095]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-d5e84095]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-d5e84095]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-d5e84095]{text-align:center}.avatar[data-v-d5e84095]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-d5e84095]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-d5e84095]{margin:0;font-weight:600}.affiliation[data-v-d5e84095]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-d5e84095]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-d5e84095]:hover{color:var(--vp-c-brand-1)}.desc[data-v-d5e84095]{margin:0 auto}.desc[data-v-d5e84095] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-d5e84095]{display:flex;justify-content:center;height:56px}.sp-link[data-v-d5e84095]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-d5e84095]:hover,.sp .sp-link.link[data-v-d5e84095]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-d5e84095]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-320c6815]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-320c6815]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-320c6815]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-320c6815]{max-width:876px}.VPTeamMembers.medium .container[data-v-320c6815]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-320c6815]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-320c6815]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-320c6815]{max-width:760px}.container[data-v-320c6815]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-font-family-base: Merriweather, serif, "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: Menlo, Monaco, "JetBrains Mono", "Fira Code", Consolas, "Courier New", monospace}:root{--Aya-Keyword: #ff6d00;--Aya-Generalized: #8b5d5d;--Aya-Fn: #005dac;--Aya-Primitive: #005dac;--Aya-Data: #218c21;--Aya-Constructor: #a021ef;--Aya-Struct: #218c21;--Aya-Field: #a021ef;--Aya-PlainText: var(--vp-c-text-1);--Aya-HoverBg: #edebfc}.dark{--Aya-Keyword: #ff6d00;--Aya-Generalized: #ffbfbf;--Aya-Fn: #79c0ff;--Aya-Primitive: #79c0ff;--Aya-Data: #33d333;--Aya-Constructor: #d2a8ff;--Aya-Struct: #33d333;--Aya-Field: #d2a8ff;--Aya-PlainText: var(--vp-c-text-1);--Aya-HoverBg: #344134}.Aya a[href]:hover,.Aya [href].hover-highlight{background-color:var(--Aya-HoverBg)!important}.Aya a{color:var(--Aya-PlainText)}.Aya .Fn{color:var(--Aya-Fn)}.Aya .Constructor{color:var(--Aya-Constructor)}.Aya .Struct{color:var(--Aya-Struct)}.Aya .Generalized{color:var(--Aya-Generalized)}.Aya .Data{color:var(--Aya-Data)}.Aya .Primitive{color:var(--Aya-Primitive)}.Aya .Keyword{font-weight:700;color:var(--Aya-Keyword)}.Aya .Field{color:var(--Aya-Field)}:root{--vp-c-accent: #DB5A6B;--vp-c-brand: #DB5A6B;--vp-c-brand-light: #DB5A6B;--vp-c-brand-lighter: #DB5A6B;--vp-c-brand-dark: #DB5A6B;--vp-c-brand-darker: #DB5A6B}.dark{--vp-code-block-bg: rgba(0,0,0,.2);--vp-c-text-code: #c0cec0;--vp-custom-block-tip-text: rgb(18, 181, 157);--vp-custom-block-tip-border: rgba(18, 181, 157, .5);--vp-custom-block-tip-bg: rgba(18, 181, 157, .1);--vp-c-text-dark-2: rgba(235, 235, 235, .6)}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-text-dark-1);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-text-dark-1);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-text-dark-1);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #DB5A6B 30%, #edd532 )}.tagline{color:#fff!important}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}.header-img[data-v-26586a7a]{position:absolute;top:var(--vp-nav-height);width:100%;height:100vh;filter:brightness(50%);background-image:url(/header.jpg);background-size:cover;background-position:left}.header-img-copyright[data-v-26586a7a]{position:absolute;bottom:10px;right:10px;opacity:.5;color:#fff;font-size:10px}.spacer[data-v-26586a7a]{position:relative;top:0;left:0}.VPLocalSearchBox[data-v-e311804d]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-e311804d]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-e311804d]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-e311804d]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-e311804d]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-e311804d]{padding:0 8px}}.search-bar[data-v-e311804d]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-e311804d]{display:block;font-size:18px}.navigate-icon[data-v-e311804d]{display:block;font-size:14px}.search-icon[data-v-e311804d]{margin:8px}@media (max-width: 767px){.search-icon[data-v-e311804d]{display:none}}.search-input[data-v-e311804d]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-e311804d]{padding:6px 4px}}.search-actions[data-v-e311804d]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-e311804d]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-e311804d]{display:none}}.search-actions button[data-v-e311804d]{padding:8px}.search-actions button[data-v-e311804d]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-e311804d]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-e311804d]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-e311804d]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-e311804d]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-e311804d]{display:none}}.search-keyboard-shortcuts kbd[data-v-e311804d]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-e311804d]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-e311804d]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-e311804d]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-e311804d]{margin:8px}}.titles[data-v-e311804d]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-e311804d]{display:flex;align-items:center;gap:4px}.title.main[data-v-e311804d]{font-weight:500}.title-icon[data-v-e311804d]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-e311804d]{opacity:.5}.result.selected[data-v-e311804d]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-e311804d]{position:relative}.excerpt[data-v-e311804d]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-e311804d]{opacity:1}.excerpt[data-v-e311804d] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-e311804d] mark,.excerpt[data-v-e311804d] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-e311804d] .vp-code-group .tabs{display:none}.excerpt[data-v-e311804d] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-e311804d]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-e311804d]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-e311804d],.result.selected .title-icon[data-v-e311804d]{color:var(--vp-c-brand-1)!important}.no-results[data-v-e311804d]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-e311804d]{flex:none} diff --git a/blog/binops.html b/blog/binops.html new file mode 100644 index 0000000..cd996e6 --- /dev/null +++ b/blog/binops.html @@ -0,0 +1,38 @@ + + + + + + Binary operators in Aya | Aya Prover + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/bye-hott.html b/blog/bye-hott.html new file mode 100644 index 0000000..4da8c10 --- /dev/null +++ b/blog/bye-hott.html @@ -0,0 +1,27 @@ + + + + + + Moving away from univalent type theory | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Moving away from univalent type theory

Aya is now moving away from univalent type theory.

Note that this does not mean we are moving away from cubical type theory -- we are trying to adapt an extensional version cubical type theory, called XTT, which is a cubical approach towards observational equality (the idea is due to Altenkirch and McBride): the equality type a =_A b is no longer defined uniformly for all types A, but rather defined by assuming a closed (inductive-recursive) universe, and defining a type family (A : Type) -> A -> A -> Type by casing on what A is. For function types, we can define it as pointwise equality, which makes function extensionality true by definition.

In case of cubical, this is automatic, due to how path types are defined.

The reference for XTT can be found in the paper A Cubical Language for Bishop Sets by Sterling, Angiuli, and Gratzer. This paper has a previous version which has a universe hierarchy, called Cubical Syntax for Reflection-Free Extensional Equality, by the same authors.

We plan to use XTT as the basis for Aya's type theory. We will change the following in v0.30 Aya:

  1. We will implement a universe à la Tarski to reuse the type checking of subtypes and paths.
  2. The impredicative Prop universe will be removed due to the complications it caused.
  3. The binding representation will be changed to locally nameless. By that we can make closed term completely serializable.
  4. We will try to implement definition-level controlling unfolding. This has a several advantages: the type checking order of bodies can be inferred from the annotations, and we can detect more cycles instead of reporting errors due to not being able to unfold unchecked function.
  5. We wish to remove implicitness information from core terms, and keep them a feature related to function calls. Π\Pi-types should not know the name of the parameter, which is natural due to α\alpha-equality. This means named arguments will only work for direct function calls.

Yes, the last two items indicate a major change in the implementation of Aya, which is essentially a rewrite of the type checker. We took this chance to revisit a couple of old issues and fix them. Currently, we have suceeded in extracting a Java module for the syntax definition from the type checker module, which will benefit third-party libraries who want to deal with serialized Aya terms.

We will not adapt the following features from XTT:

  1. Partial elements are first-class citizens, i.e. they have manifest "cubical" phases. Instead we will have first class total elements and use a Partial type to represent partial elements.
  2. Intervals are not types. We will adapt the 2LTT-style solution from Cubical Agda, which has some universes to classify exo-types.
  3. The type-case operator will remain internal to the type checker. While this might be useful in the future development related to metaprogramming, we do not see any immediate use for it except for implementing the computation of generalized coercion.
  4. As we already said, we do not intend to add an impredicative Prop universe, while the XTT paper said they intend to add it. We encourage the users to embrace the axiom of propositional resizing, which makes not just Props to be impredicative, but also all h-props (e.g. types that are provably props) to be impredicative.

The development is still in a private work-in-progress repository, which we will open-source and be ported to the main repo once we can compile this website with the new type checker, which implies complete support for inductive types except for the positivity checker.

We will also have to rewrite some guides about higher inductive types, and instead use some quotient type examples.

From that, we will start considering support for classes with extensions, and try to formalize some mathematics and do some real-world programming with Aya, partially bootstrapping the type checker.

Stay tuned!

+ + + + \ No newline at end of file diff --git a/blog/class-defeq.html b/blog/class-defeq.html new file mode 100644 index 0000000..786366d --- /dev/null +++ b/blog/class-defeq.html @@ -0,0 +1,38 @@ + + + + + + Class extension with definitional projection | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Class extension with definitional projection

We want a class system with the following basic capabilities:

  • Classes can be extended with new fields (similar to extends in Java).
  • Multiple inheritance is possible, because we can detect conflicts, and in case that really happens, we reject it.
  • Subtyping is available and uses coercion. This will be discussed in another post.

To add more flexibility to it, we want the following feature.

Anonymous extensions

Suppose we have a class Precat for precategories (written in pseudocode):

class Precat
+| Ob : Type
+| Hom : Ob -> Ob -> Type
+| Hom-set (A B : Ob) : isSet (Hom A B)
+| id (A : Ob) : Hom A A
+| ....

Suppose the syntax for creating an instance of a class is new Precat { Ob := .., Hom := .., ... }. I want the following:

  • Precat is the type for all instances of the class Precat.
  • Precat { Ob := Group } is the type for all instances of the class Precat whose Ob field is (definitionally) Group.
  • Precat { Ob := Group, Hom := GroupHom } is the type for all instances of the class Precat whose Ob field is Group and Hom field is GroupHom.
  • etc.

This is called anonymous class extension, already implemented in the Arend language. As a syntactic sugar, we may write Precat { Ob := Group } as Precat Group, where the application is ordered the same as the fields in the class definition.

Definitional projection

We further want definitional projection:

  • Suppose A : Precat Group, then A.Ob is definitionally equal to Group.
  • Suppose A : Precat Group GroupHom, then A.Hom is definitionally equal to GroupHom.

This concludes the basic features of the class system. To implement this, it may seem that we need to have access to types in the normalizer, which makes it very heavy (in contrast to the lightweight normalizer you can have for plain MLTT).

Implementation

A uniform implementation of this definitional projection requires the definitional equality to commute with substitution, say, we may have

A:PrecatA.Ob:U{A : \text{Precat} ⊢ A.\text{Ob} : \mathcal U}

This is a normal form. Then, we have Grp : Precat Group (so Grp.Ob is definitionally equal to Group), and we may perform the substitution [Grp/A][\text{Grp} / \text{A}] on the above normal form:

Grp:Precat GroupGrp.Ob:U\text{Grp} : \text{Precat}~\text{Group} ⊢ \text{Grp}.\text{Ob} : \mathcal U

We want the above to be equal to Group as well. Without access to contexts, it seems really hard!

Here's a trick: whenever we see A : Precat Group, we elaborate it into (the idea is similar to an η-expansion):

A ==> new Precat
+  { Ob := Group
+  , Hom := A.Hom
+  , Hom-set := A.Hom-set
+  , id := A.id
+  , ...
+  }

By that, we will never have A.Ob in the source language, because it always gets elaborated into Group directly. In case we partially know about A from the type, we really elaborate the type information right into the core term. So, we don't even have a chance to touch the bare A (not being projected) in the core language, and anything of a class type is always in an introduction form.

This should implement the definitional projection feature without even modifying the MLTT normalizer.

The idea of this feature comes from the treatment of extension types inspired from cooltt, see relevant post.

+ + + + \ No newline at end of file diff --git a/blog/extended-pruning.html b/blog/extended-pruning.html new file mode 100644 index 0000000..411c818 --- /dev/null +++ b/blog/extended-pruning.html @@ -0,0 +1,77 @@ + + + + + + Extended pruning for pattern unification | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Extended pruning for pattern unification

prim I
+prim Path (A : IType) (a : A 0) (b : A 1) : Type
+

The vanilla pattern unification is very limited. Consider:

 Path (fn iVec (+-assoc i) A)
+      ((xs ++ ys) ++ zs)
+      (xs ++ (ys ++ zs))
+

This is the equality between two sized vectors: (xs ++ (ys ++ zs)) and ((xs ++ ys) ++ zs), the left hand side has type Vec (xs.size ++ (ys.size ++ zs.size)) A, and the right hand side has type Vec ((xs.size ++ ys.size) ++ zs.size).

So, the equality type is heterogeneous, and I introduce a type Vec (+-assoc i) A for it, where +-assoc is the associativity.

So this should type check, right? But pattern unification fails! I've left the two sides of +-assoc implicit, so I'm supposed to infer what numbers' associativity I care about, using pattern unification.

Then, pattern unification fails because the constraints are generated from cubical boundaries, where the "interval" variable is substituted to its sides. So, we have this type (the Path is called PathP in Agda):

Γ ­⊢ Path (fn i => Vec (+-assoc i) Nat) vecA vecB

Note the type of +-assoc is Fn (o p q : Nat) → ((o + p) + q) = (o + (p + q)).

So elaboration inserts metavariables:

Γ ­⊢ Path (fn i => Vec (+-assoc {?} {?} {?} i) Nat) vecA vecB

Where these metavariables have the following scope:

Γ , i : I ­⊢ ? : Nat

Note that the i : I binding is in-scope. So the metavariables with their spines added together becomes:

Γ ­⊢ Path (fn i => Vec (+-assoc {?a Γ i} {?b Γ i} {?c Γ i} i) Nat) vecA vecB

Then, we get the following tycking problems, according to the rules of Path:

vecA : Vec (+-assoc {?a Γ 0} {?b Γ 0} {?c Γ 0} 0) Nat
+vecB : Vec (+-assoc {?a Γ 1} {?b Γ 1} {?c Γ 1} 1) Nat

Look at the spines of all of these metavariables. None of them are in pattern fragment. So every equality constraint cannot be solved by pattern, because they're always equality after a substitution!

This can be solved by further extending your algorithm with pruning or a constraint system with a "lax" mode of solving metas when your equations rely essentially on non-pattern equations, but I feel it has defeated the point of finding the most general solution, which I used to believe to be the purpose of pattern unification....

Case Study

Right now Aya will try to prune these non-pattern arguments out and try to solve them. This obviously generates non-unique solutions, but I think it will be useful in practice.

In Agda, the following code is in the library:

++-assoc : ∀ {m n k} (xs : Vec A m) (ys : Vec A n) (zs : Vec A k) →
+          PathP (λ i → Vec A (+-assoc m n k (~ i)))
+          ((xs ++ ys) ++ zs) (xs ++ ys ++ zs)
+++-assoc {m = zero} [] ys zs = refl
+++-assoc {m = suc m} (x ∷ xs) ys zs i = x ∷ ++-assoc xs ys zs i

However, if we replace the m with _, Agda will fail with the following error:

Failed to solve the following constraints:
+  _41 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i1
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i1)) n k
+       (~ i1))
+    (blocked on any(_41, _57))
+  _40 (xs = (x ∷ xs)) (ys = ys) (zs = zs) = x ∷ ++-assoc xs ys zs i0
+    : Vec A
+      (+-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i0)) n k
+       (~ i0))
+    (blocked on any(_40, _57))
+  +-assoc (_m_39 (xs = xs) (ys = ys) (zs = zs) (i = i)) n k (~ i)
+    = _n_49
+    : ℕ
+    (blocked on _n_49)
+  +-assoc (_m_39 (xs = (x ∷ xs)) (ys = ys) (zs = zs) (i = i)) n k
+  (~ i)
+    = ℕ.suc _n_49
+    : ℕ
+    (blocked on _m_39)
+  _40 (xs = []) (ys = ys) (zs = zs)
+    = _41 (xs = []) (ys = ys) (zs = zs)
+    : _x.A_43
+    (blocked on any(_40, _41))
+  _x.A_43
+    = Vec A
+      (+-assoc (_m_39 (xs = []) (ys = ys) (zs = zs) (i = i)) n k (~ i))
+    : Type
+    (blocked on _x.A_43)
+  _m_39 (i = i0) = m : ℕ (blocked on _m_39)
+  _m_39 (i = i1) + (n + k) = m + (n + k) : ℕ (blocked on _m_39)

In Aya, this will raise the following warning:

  6 │       def ++-assoc-type (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  7 │         => Path (fn i => Vec (+-assoc i) A)
+  8 │         (xs ++ (ys ++ zs))
+    │          ╰──────────────╯ ?a n A m o xs ys zs 0 >= n, ?b n A m o xs ys zs 0 >= m,
+                                ?c n A m o xs ys zs 0 >= o
+  9 │         ((xs ++ ys) ++ zs)
+    │          ╰──────────────╯
+    │          ╰──────────────╯ ?a n A m o xs ys zs 1 >= n, ?b n A m o xs ys zs 1 >= m,
+                                ?c n A m o xs ys zs 1 >= o
+
+Info: Solving equation(s) with not very general solution(s)

The inline equations are the type checking problems that Aya did something bad to solve.

Conor McBride told me pattern unification is a good algorithm, but the problem of interest might not be what we think it is. It is good for undergraduate induction, i.e. the object being induct on is a variable, and the motive of such induction is pattern. This is an enlightening perspective! But now that we have more problems, I think we might want to extend it. Just think about how many people use --lossy-unification in Agda.

+ + + + \ No newline at end of file diff --git a/blog/ind-prop.html b/blog/ind-prop.html new file mode 100644 index 0000000..417c2c4 --- /dev/null +++ b/blog/ind-prop.html @@ -0,0 +1,44 @@ + + + + + + Impredicative Props are hard | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Impredicative Props are hard

Throughout this blog post, I will use the term Prop to mean the type of propositions, which does not have to be strict, but has the property that it cannot eliminate to Type.

Motivation

Long time ago I wrote a PASE question regarding definitional irrelevance. An important pro of Prop in my opinion is that it is more convenient to be turned impredicative. Mathematicians want impredicativity for various reasons, one thing being that it is natural to have a proposition being a quantification over types, which I think is true.

Now I want to point out several reasons to avoid Prop and impredicativity based on Prop. Note that I'm not asking you to get rid of impredicativity in general!

Ad-hoc termination rules of impredicative Prop

There is another related PASE question regarding termination. You don't have to read it, I'll paraphrase the example.

Usually, for structural induction, we have the notion of "comparing term size". For instance, if we have a pattern suc n, then recursively call the function itself with n on the same position is considered good, because we think n < suc n. But consider the following example.

It makes sense to define the following type:

haskell
data BrouwerTree
+  = Leaf Bool
+  | Branch (Nat -> BrouwerTree)

and have the following structural-induction:

haskell
left :: BrouwerTree -> Bool
+left (Leaf b) = b
+left (Branch xs) = left (xs 0)

Note that in the clause of left (Branch xs), the recursive call left (xs 0) is considered smaller, in other words, we think xs 0 < Branch xs.

This assumption is called 'predicative assumption'. As you may tell from the name, it can only be made on things that are predicative, and we know Prop is usually impredicative, so we should not allow this. At this point, you might expect a proof of false using predicative assumption on Prop, which I'll show in this blog post.

Note that allowing such recursion pattern is very important! The famous W-type is also using this assumption.

A counterexample with Prop looks like this (since we need to talk about universes and dependent types, we start using Agda syntax instead of Haskell):

data Bad : Prop where
+  branch : ((P : Prop) → P → P) → Bad
+
+bad : Bad
+bad = branch (λ P p → p)
+
+no-bad : Bad → ⊥
+no-bad (branch x) = no-bad (x Bad bad)
+
+very-bad : ⊥
+very-bad = no-bad bad

Notice that the no-bad (branch x) clause uses the recursion no-bad (x Bad bad), which is only valid with the predicative assumption. So, having this predicative assumption actually proves false for Prop, so for Prop, we need to patch the termination checker to ban this rule. So, how hard is it to patch the termination checker?

Coq and Lean have a similar problem, but they are generating eliminators for inductive definitions, so they can generate the correct eliminator for Prop, instead of patching the termination checker. Then, Coq carefully implements a comparison function for size-decreasing arguments (this means eliminators are not the "most primitive" thing in Coq, but the termination checker is also part of it. I got this piece of information from Lysxia and Meven Lennon-Bertrand). In Coq, the eliminator for Bad is

Bad_ind : forall P : Prop,
+    ((forall p : Prop, p -> p) -> P) ->
+    Bad -> P

Note that there is no recursive arguments, so there is no recursion allowed.

Now, this sounds like just adding some if statements to the termination checker, but the situation is actually worse. In Agda, metavariables are pervasive, like the following code is partially accepted:

data Bad : Prop where
+  b : ((P : { }0) → P → P) → Bad

Agda will not fail on this code, but then what to do in the termination checker is really unclear. If you're using a termination checker, you want to get rid of impredicativity of Prop! This eliminates the need of a universe-based irrelevance.

Alternative ways to impredicativity

We may use axioms to get impredicativity. Suppose we define (since we no longer have it in the language) Prop := Σ (A : Type) (isProp A), there are two different axioms that imply impredicativity of Prop:

  • Propositional resizing, which is basically a restatement of impredicativity.
  • Classical axioms, which implies that A : Prop is either or , which further implies that Prop ≅ Bool, which implies resizing.
  • A completely separate layer in the type theory that only concerns logic and propositions. This is similar to the solution in Russell's original simple theory of types, where we replace the "simple type" with dependent types.

If we think of the right way of doing math is to work with classical axioms, why on earth are we forging a weaker theorem as part of the language?

+ + + + \ No newline at end of file diff --git a/blog/index-unification.html b/blog/index-unification.html new file mode 100644 index 0000000..0b2a66e --- /dev/null +++ b/blog/index-unification.html @@ -0,0 +1,33 @@ + + + + + + Index unification and forced patterns in Aya | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Index unification and forced patterns in Aya

Aya implements a version of index unification algorithm that allows emission of obvious patterns. Here's an example. Consider the famous "sized-vector" Vec (n : Nat) (A : Type) definition, and we can perform some pattern matching:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)

This code may seem obviously correct, but why would I write about it if it's so simple? 😉 Let's run the type checking in our head, clause by clause and pattern by pattern.

  1. The first pattern in the first clause, a, is a valid pattern for Nat. This means we will substitute the codomain of the pattern matching with [a/n], where n is the corresponding name in the telescope and a is the term corresponding to the pattern.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. However, the expected type is Vec a A, which does not match the type of the pattern.

So, here is the problem! The well-typed version of the program is actually:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len zero vnil = 0
+len (suc a) (vcons _ x) = suc (len a x)

However, isn't it obvious that the first pattern in the first clause must be zero? It would be nice if the type checker can figure this out by itself. In fact, both Agda and Idris can do this! In Agda, the feature is called "dotted patterns" in the documentation and "inaccessible patterns" in the paper. I will prefer calling it "forced patterns" because the patterns are actually accessible (in the sense that the bindings in the patterns are used) and does not use the Agda dot syntax.

Forced patterns are not easy to implement. The simplest pattern type checking algorithm can be quite straightforward: we check the type of the pattern, add the bindings to the context so we can type the rest of the telescope, and check the body of the clause. With forced patterns, we will need to change the existing well-typed variable patterns into constructor patterns, so the algorithm becomes stateful.

In Aya, I introduced the concept of "meta patteriables" which is a funny reference to "meta variables" used in unification in conversion check.

The so-called "meta patteriables"

Related PR: #198

When we see a variable pattern, we transform it into a MetaPat which is a "unification variable" pattern that can be "solved" into another pattern. A reference to a MetaPat is converted into a special meta variable that has a mutable reference to the MetaPat (this can be replaced by a mutable map in the type checking state when you need purity, but I prefer mutable references for implementation simplicity).

When we are type checking a pattern of type D a for D an indexed inductive family and the expected type is D b where b is the special meta variable, we claim that b is solved to a, and the MetaPat that corresponds to b will be transformed into a when we finalize the type checking results.

There are two more cases to deal with:

  1. In case a MetaPat is not "solved", we just let it be a variable pattern.
  2. In case a MetaPat is "solved" more than once, we must make sure the solutions are identical.

Note that a MetaPat may contain bindings, but these bindings are already from the current context, so we do not need to add them again to the context.

Now, let's run the new algorithm:

len : ∀ {A} -> (n : Nat) -> Vec n A -> Nat
+len a vnil = 0
+len a (vcons _ x) = suc (len _ x)
  1. The first pattern in the first clause, a, is a valid pattern for Nat, so we generate a MetaPat(a) and substitute the codomain with MetaPatRef(a), e.g. Vec MetaPatRef(a) A -> Nat.
  2. The second pattern in the first clause, vnil, is a pattern for Vec zero A. The expected type is Vec MetaPatRef(a) A, and we solve MetaPat(a) to zero.
  3. Now we check the body and finalize the clause. Since a is solved to zero, we generate the well-typed clause len zero vnil = 0 which is exactly what we need.

Thanks for reading!

+ + + + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..3cedb83 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,27 @@ + + + + + + Aya blogs | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Aya blogs

See the sidebar 👈 for the list of blog posts.

Note that some posts are written before some breaking syntax changes. The code examples may not work with the latest version of Aya.

+ + + + \ No newline at end of file diff --git a/blog/lang-exts.html b/blog/lang-exts.html new file mode 100644 index 0000000..cb607e6 --- /dev/null +++ b/blog/lang-exts.html @@ -0,0 +1,27 @@ + + + + + + Haskell or Agda style extensions | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Haskell or Agda style extensions

In Haskell, you can do {-# LANGUAGE TypeFamilies #-}, and similarly in Agda you can {-# OPTIONS --two-levels #-}. These "pragma" can also be specified via command line arguments. Since Haskell is too weak and even basic features need extensions, I'll be avoiding talking about it and stick to Agda.

Agda's extensions

The purpose of these pragma is threefold:

  • Disable or enable (particularly disable) certain checks or compiler phases such as positivity checks, termination checks, deletion rule in unification, etc.
  • Modify the compiler by changing some parameters, such as termination check's recursion depth, use call-by-name instead of call-by-need, cumulativity, etc.
  • Disable or enable (particularly enable) certain language features, such as cubical features, sized types, custom rewriting rules, etc.

One special pragma is to ensure that no known inconsistent flag or combination of flags is turned on -- --safe. Let's discuss it later.

The current status of Agda libraries, that having separate cubical, HoTT library, and standard library, implementing the basic features individually, is a significant evidence that Agda is barely a programming language, but a collection of programming languages that share a lot in common and have good interoperability. Each flag that enables a certain language feature makes Agda a different language, and it is difficult in general to make two different language source-to-source compatible (see Kotlin-Java, Scala-Java, etc).

It is good to keep your language evolving like Agda (adding new features aggressively), and indeed Agda is the proof assistant with the richest set of language features I've known so far. However, this also negatively impacts Agda's reputation to some extent, that people say it's an experiment in type theory. Well, maybe it's not a negative impact, but it prevents big customers (such as Mathematicians looking for a tool to formalize math) from choosing the language. At least, we don't want this to happen to our language.

Aya's choice?

So, we will not introduce any "feature" flags, and will have only one base library. Aya will be one language, its features are its features. If we decide on removing a feature, then we remove it from the language (not going to keep it as an optional flag). If we decide on adding a feature, we add it and it should be available without any options.

It should still be encouraged to add some fancy, experimental features, but I think they should stay in branches or forks and will be either enlisted to the language or abandoned eventually.

However, the "parameters" part is not as bad. For example, it is very easy to allow type-in-type in the type checker -- we just disable the level solver. This is useful when the level solver prevents us from experimenting something classical using our language features but unfortunately the level solver is just unhappy with something minor. We can also like tweak the conversion checking algorithm we use, like we can use a simpler one that only solves first-order equations or we can enable the full-blown pattern unification algorithm. Verbosity levels, can also be seen as such parameter, and it's extremely useful for debugging the compiler. So we can apply that.

Safe flag?

To be honest, it's hard to decide on a semantic of the word "safe", and relate that to the Agda pragma --safe. To me, it means "logical consistency", and if we can set --safe as the last argument of an Agda file, it should be guaranteed by Agda that it cannot provide you a proof of false. There are many related discussion in the Agda issue tracker that talks 'bout how should --safe behave. Sometimes it fits my guess (for logical consistency), sometimes it implies more stuffs.

Anyway, a "logical consistency" flag seems useful, and will probably appear in Aya.

For disabling or enabling some checks, if we disable a check that is required to be consistent, then it should break --safe. I think we will of course enable all of these checks by default, so exploiting the disabledness of a check can lead to inconsistency eventually. So, we can use an "unsafe" flag to ensure that our language is only unsafe when we want it to be. It is quite meaningful as well to have an "unsafe" mode, from a real-world programming perspective.

Conclusion

We'll have a language, with some flags that tweaks the parameters of some algorithms (which are no-harm), and some flags for disabling some checks (which will lead to an error at the end of tycking), and an unsafe flag that enables a set of features such as sorry and suppresses the error of disabling checks.

Library Design

Speaking of the base library design, I have some vague ideas in mind. I'd like it to be split into three parts (not sure if we're gonna make it three modules inside one stdlib or three standalone libraries):

  • The base part, for basic definitions like lists, trees, sorting, rings, categories, path lemmas, simple tactics like rewrites, etc.
  • The programming part, for I/O, effects, unsafe operations, FFI, etc.
  • The math part, like arend-lib or Lean's mathlib.

Then, we can use these libraries on-demand.

+ + + + \ No newline at end of file diff --git a/blog/path-elab.html b/blog/path-elab.html new file mode 100644 index 0000000..ded5bf8 --- /dev/null +++ b/blog/path-elab.html @@ -0,0 +1,47 @@ + + + + + + Elaboration of the "extension" type | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Elaboration of the "extension" type

Aya uses the so-called "extension" type (probably first-appeared here) as a generalized version of path type.

Instead of using the conventional path type, as in Cubical Agda:

  • PathP (λ i → A i) a b for a : A 0 and b : A 1
  • λ i → a : PathP (λ i → A i) (a 0) (a 1) for a : A i
  • p i : A i for p : PathP (λ i → A i) a b
    • p 0 = a and p 1 = b

This type looks good, but it does not scale to higher dimensions. Consider, for example, the type of a square with four faces specified (from Agda's cubical library):

Square :
+  {a₀₀ a₀₁ : A} (a₀₋ : a₀₀ ≡ a₀₁)
+  {a₁₀ a₁₁ : A} (a₁₋ : a₁₀ ≡ a₁₁)
+  (a₋₀ : a₀₀ ≡ a₁₀) (a₋₁ : a₀₁ ≡ a₁₁)
+  → Type _
+Square a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → a₋₀ i ≡ a₋₁ i) a₀₋ a₁₋

It gets even worse when the type is heterogeneous:

SquareP :
+  (A : I → I → Type ℓ)
+  {a₀₀ : A i0 i0} {a₀₁ : A i0 i1} (a₀₋ : PathP (λ j → A i0 j) a₀₀ a₀₁)
+  {a₁₀ : A i1 i0} {a₁₁ : A i1 i1} (a₁₋ : PathP (λ j → A i1 j) a₁₀ a₁₁)
+  (a₋₀ : PathP (λ i → A i i0) a₀₀ a₁₀) (a₋₁ : PathP (λ i → A i i1) a₀₁ a₁₁)
+  → Type ℓ
+SquareP A a₀₋ a₁₋ a₋₀ a₋₁ = PathP (λ i → PathP (λ j → A i j) (a₋₀ i) (a₋₁ i)) a₀₋ a₁₋

We have decided to use a partial element to represent these faces, and so we can freely add or delete these a face, without having to explicitly write down all faces for generality. This leads to the following syntax:

--------  ↓ type           ↓ the "i = 0" end is b
+[| i |] (A i) {| i := a | ~ i := b |}
+-- ^ interval         ^ the "i = 1" end is a

The above type is equivalent to PathP (λ i → A i) a b. We may use this to simplify the type signature of path concatenation:

def concat {A : Type}
+  (p : [| i |] A {| |})
+  (q : [| i |] A {| ~ i := p 1 |})
+  : [| i |] A {| ~ i := p 0 | i := q 1 |}

It has fewer parameters than the conventional version:

def concat {A : Type}
+  {a b c : A}
+  (p : Path A a b)
+  (q : Path A b c)
+  : Path A a c

Now, how to implement this type? We have decided to overload lambdas and expressions as Cubical Agda did, but we have encountered several problems. Here's the story, in chronological order.

Below, we use "type checking" and we actually mean "elaboration".

First attempt

Principle: do not annotate the terms (including variable references) with types, because this is going to harm efficiency and the code that tries to generate terms (now they'll have to generate the types as well, pain!).

Problem: reduction of path application is type-directed, like p 1 will reduce according to the type of p.

Solution: annotate the path applications instead. Every time we do type checking & we get a term of path type, we "η-expand" it into a normal lambda expression with a path application inside. This secures the reduction of path applications.

New Problem: we expand too much. In case we want to check the type of term against a path type, the term is actually η-expanded and has a Π-type. So, we have the manually write path lambdas everywhere, e.g. given p : Path A a b, and only λ i → p i is a valid term of type Path A a b, not p (which is internally a lambda).

Lesson: we need to preserve the types somehow, generate path applications only when necessary.

Second attempt

New Solution: when checking something against a path type, we directly apply the boundary checks, instead of trying to invoke synthesize and unify the types. This eliminates a lot of λ i → p i problems.

New Problem: this is incompatible with implicit arguments. Consider the following problem:

  • have: idp : {a : A} -> Path A a a
  • elaborated: λ i → idp i : {a : A} -> I -> A
  • check: idp : Path Nat zero zero

The new solution will try to apply the boundary before inserting the implicit arguments, which leads to type-incorrect terms.

Lesson: we probably should not change the bidirectional type checking algorithm too much.

Third attempt

New Solution: the type information is known in the bidirectional type checking anyway, so we only generate path applications during the type checking of application terms.

This has worked so far, with some unsolved problems (yet to be discussed):

  • Is p : [| i |] A {| |} an instance of type [| i |] A {| i := a |}?
    • Currently, Aya do not think so.
  • Can we automatically turn Agda-style squares to its preferred version in generalized path type?
    • Related issue: 530
    • A sort of "flattening"

If you have any thoughts, feel free to reach out :)

Update (2023-03-24)

The implementation has been updated to solve some the above problems partially. Essentially, we need to do one thing: coercive subtyping. Since the type checking already respects the type (say, does not change the type), it remains to insert an η-expansion when the subtyping is invoked. We also need to store the boundary information in the path application term to have simple normalization algorithm.

Carlo Angiuli told me that in cooltt, the path type is decoded (in the sense of the universe à la Tarski el operator) into a Π-type that returns a cubical subtype, and since el is not required to be injective, this should be fine. At first, I was worried about the fibrancy of the path type, because a Π-type into a subtype is not fibrant, but it turns out that this is unrelated. We don't talk about the fibrancy of the types, but only the fibrancy of the type codes.

+ + + + \ No newline at end of file diff --git a/blog/pathcon-elab.html b/blog/pathcon-elab.html new file mode 100644 index 0000000..40d56ae --- /dev/null +++ b/blog/pathcon-elab.html @@ -0,0 +1,36 @@ + + + + + + Elaboration of path constructors | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Elaboration of path constructors

This is not a blog post, but a reference for developers and type theory implementers.

Content below assumes knowledge on cubical type theory, for example the extension type and higher inductive types.

Syntax

  • [i]X{φu}[\overline i] X\{\overline{φ↦ u}\}: extension types, PathP A a b in Agda corresponds to [i]A i{i=0a,i=1b}[i] A~i\{i=0↦ a, i=1↦ b\}.
  • ii is sometimes used to denote i=1i=1 and ¬i¬ i is used to denote i=0i=0.

Flattening

Used in higher inductive type elaboration.

A[i]X{}AΠ(x:X)Yflatten(A):=A\newcommand{\flattenOp}[1]{\textsf{flatten}(#1)} \cfrac{A \ne [\overline i] X\set{\cdots} \quad A\ne Π(x:X)→ Y} {\flattenOp{A} := A}

flatten(X):=[j]Y{φu}flatten([i]X{φu}):=[i,j]Y{φu @ j,φu}\newcommand{\flattenOp}[1]{\textsf{flatten}(#1)} \cfrac {\flattenOp{X}:=[\overline j] Y\set{\overline{φ'↦ u'}}} {\flattenOp{[\overline i] X\set{\overline{φ↦ u}}} := [\overline i,\overline j] Y\set{\overline{φ'↦ u'~@~\overline j},\overline{φ↦ u}}}

flatten(Π(x:X)Y):=Π(x:X)flatten(Y)\newcommand{\flattenOp}[1]{\textsf{flatten}(#1)} \cfrac{} {\flattenOp{Π(x:X)→ Y}:=Π(x:X)→ \flattenOp{Y}}

Example

isProp(A):=Π(a b:A)[i]A{ia,¬ib}isSet(A):=Π(a b:A)isProp([i]A{ia,¬ib})\begin{align*} \textsf{isProp}(A)&:=Π(a~b:A) → [i]A\set{i↦ a,¬ i↦ b}\\ \textsf{isSet}(A)&:=Π(a~b:A)→\textsf{isProp}([i]A\set{i↦ a,¬ i↦ b})\\ \end{align*}

So the normal form of isSet is:

Π(a b:A)Π(p q:[i]A{ia,¬ib})[j]([i]A{ia,¬ib}){jq,¬jp}\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\set{i↦ a,¬ i↦ b})\\ &→ \big[j\big] \big([i]A\set{i↦ a,¬ i↦ b}\big) \Set{j↦ q, ¬ j↦ p}\\ \end{align*}

And flattenOp(isSet(A))\textsf{flattenOp}(\textsf{isSet}(A)) is:

Π(a b:A)Π(p q:[i]A{ia,¬ib})[j i]A{ia,¬ib,jq @ i,¬jp @ i}\begin{align*} Π(a~b:A)&→Π(p~q:[i]A\set{i↦ a,¬ i↦ b})\\ &→ \big[j~i\big] A \Set{i↦ a,¬ i↦ b,j↦ q~@~i, ¬ j↦ p~@~i}\\ \end{align*}

So for example, set truncation from HoTT looks like this:

inductive SetTrunc (A : Type)
+| mk : A -> SetTrunc A
+| trunc : isSet (SetTrunc A)

The trunc constructor is elaborated to cubical syntax by flattening the type and attach the partial on the return type to the constructor, something like this:

trunc : Π (a b : SetTrunc A)
+    -> (p q : a = b)
+    -> (j i : I) -> SetTrunc A
+  { i = 1 -> a
+  ; i = 0 -> b
+  ; j = 1 -> q @ i
+  ; j = 0 -> p @ i
+  }

Aya is currently working on the so-called IApplyConfluence problem for recursive higher inductive types like SetTrunc, see this question which is a problem I'm wrapping my head around at the moment. More details will be posted later.

+ + + + \ No newline at end of file diff --git a/blog/redirect.html b/blog/redirect.html new file mode 100644 index 0000000..4eff4e4 --- /dev/null +++ b/blog/redirect.html @@ -0,0 +1,27 @@ + + + + + + Aya Prover + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/tt-in-tt-qiit.html b/blog/tt-in-tt-qiit.html new file mode 100644 index 0000000..43ab8f2 --- /dev/null +++ b/blog/tt-in-tt-qiit.html @@ -0,0 +1,93 @@ + + + + + + Type Theory in Type Theory using Quotient Inductive Types | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Type Theory in Type Theory using Quotient Inductive Types

Link to the paper.

Here's a self-contained full definition.

Prelude

prim I
+prim Path
+prim coe
+
+variable A B : Type
+def infix = (a b : A) : TypePath (\iA) a b
+def refl {a : A} : a = a\ia
+def pmap (f : AB) {a b : A} (p : a = b) : f a = f b\if (p i)
+
+// Copied from Carlo Angiuli's thesis
+def transport {a b : A} (B : AType) (p : a = b) (x : B a) : B b
+  ⇒ coe 0 1 (\yB (p y)) x
+

Context

open inductive Con : Type
+| 
+| infix  (Γ : Con) (Ty Γ)
+

An instance of the type Con corresponds to the ΓΓ in the judgment Γ ctxΓ~\text{ctx}, and these constructors correspond (on-the-nose) to:

 ctxΓ ctxΓA typeΓA ctx\cfrac{}{·~\text{ctx}} \quad \cfrac{Γ~\text{ctx} \quad Γ⊢A~\text{type}}{Γ \vartriangleright A~\text{ctx}}

It uses the judgment ΓA typeΓ⊢A~\text{type}, which is defined below.

Types

open inductive Ty (Γ : Con) : Type
+| U
+| Π (A : Ty Γ) (B : Ty (Γ  A))
+| El (A : Tm Γ U)
+| Subst {Δ : Con} (Ty Δ) (s : Γ << Δ)
+| SubId {A : Ty Γ} : Subst A (id refl) = A
+| SubAss {Δ Θ : Con} {A : Ty Θ} {θ : Γ << Δ} {δ : Δ << Θ}
+  : Subst (Subst A δ) θ = Subst A (δ  θ)
+| SubU {Δ : Con} (δ : Γ << Δ) : Subst U δ = U
+| SubEl {Δ : Con} {δ : Γ << Δ} {a : Tm Δ U}
+  : Subst (El a) δ = El (transport (Tm _) (SubU δ) (sub a))
+| SubΠ {Δ : Con} (σ : Γ << Δ) {A : Ty Δ} {B : Ty (Δ  A)}
+  : Subst (Π A B) σ = Π (Subst A σ) (Subst B (ext σ A))
+

The ext operator corresponds to the ↑ operator in the paper:

def ext {Γ Δ : Con} (δ : Γ << Δ) (A : Ty Δ) : Γ  Subst A δ << Δ  A ⇒
+  δ  π₁ (id refl)  transport (Tm _) SubAss (π₂ (id refl))
+

An instance of the type Ty Γ corresponds to the AA in the judgment ΓA typeΓ⊢A~\text{type}. The constructor U corresponds to the following rule:

ΓU type\cfrac{}{Γ⊢\mathcal{U}~\text{type}}

I believe you already know how Π works. The constructor El computes the type corresponds to an instance of U:

ΓA:UΓEl(A) type\cfrac{Γ⊢A:\mathcal{U}}{Γ⊢\text{El}(A)~\text{type}}

Note that it uses the judgment ΓA:UΓ⊢A:\mathcal{U}, which is defined below.

Substitution objects

open inductive infix << (Γ : Con) (Δ : Con) : Type
+   tighter = looser 
+| _, ε
+| _, Δ'  Ainfixr  (δ : Γ << Δ') (Tm Γ (Subst A δ)) tighter =
+| infix  {Θ : Con} (Θ << Δ) (Γ << Θ) tighter = 
+| π₁ {A : Ty Δ} (Γ << Δ  A)
+| id (Γ = Δ)
+| idl• {s : Γ << Δ} : id refl  s = s
+| idr• {s : Γ << Δ} : s  id refl = s
+| ass {Θ Ξ : Con} {ν : Γ << Ξ} {δ : Ξ << Θ} {σ : Θ << Δ}
+  : (σ  δ)  ν = σ  (δ  ν)
+| π₁β {δ : Γ << Δ} {A : Ty Δ} (t : Tm Γ (Subst A δ)) : π₁ (δ  t) = δ
+| _, _  _ ⇒ πη {δ : Γ << Δ} : (π₁ δ  π₂ δ) = δ
+| _, Δ'  A∷∘ {Θ : Con} {σ : Θ << Δ'} {δ : Γ << Θ} {t : Tm Θ (Subst A σ)}
+  : (σ  t)  δ = (σ  δ)  transport (Tm _) SubAss (sub t)
+| _, εη {δ : Γ << } : δ = ε
+

An instance of type Γ << Δ corresponds to the σσ in the substitution typing Γσ:ΔΓ ⊢ σ : Δ.

Terms

open inductive Tm (Γ : Con) (Ty Γ) : Type
+| _, Π A Bλ (Tm (Γ  A) B)
+| Γ'  A, Bapp (Tm Γ' (Π A B))
+| _, Subst A δsub (Tm _ A)
+| _, Subst A (π₁ δ) ⇒ π₂ (Γ << _  A)
+| _, Subst B δ as Aπ₂β {Δ : Con} (t : Tm Γ A)
+  : transport (Tm _) (pmap (Subst B) (π₁β t)) (π₂ (δ  t)) = t
+| _  _, AΠβ (f : Tm Γ A) : app (λ f) = f
+| _, Π _ _ as AΠη (f : Tm Γ A) : λ (app f) = f
+| _, Π A Bsubλ {Δ : Con} {σ : Γ << Δ} {A' : Ty Δ} {B' : Ty (Δ  A')}
+  (fording : Π (Subst A' σ) (Subst B' _) = Π A B) {t : Tm (Δ  A') B'}
+  : let ford := transport (Tm _) fording
+    in ford (transport (Tm _) (SubΠ σ) (sub (λ t)))
+     = ford (λ (sub t))
+

An instance of type Tm Γ A corresponds to the tt in the judgment Γt:AΓ⊢t:A.

+ + + + \ No newline at end of file diff --git a/guide/fake-literate.html b/guide/fake-literate.html new file mode 100644 index 0000000..9a55379 --- /dev/null +++ b/guide/fake-literate.html @@ -0,0 +1,71 @@ + + + + + + Fake literate mode | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Fake literate mode

The Aya compiler generates styled (e.g. with colors and text attributes) code snippets for many targets, like HTML, LaTeX, etc., and it's tempting to use the same tool but for different languages. This is what the fake literate mode is for. Let me know if you want other backend supports.

To start, install the latest version of Aya, put the following code in a file named hello.flcl:

keyword: data where;
+symbol: ≃;
+data: Int;
+constructor: zero succ;
+------
+data Int where
+  zero : Int
+  succ : Int ≃ Int

Then, run the following command to generate literate output, where you replace <AYA> with either java -jar <path-to-aya.jar> or aya depending on your installation:

<AYA> --fake-literate hello.flcl

Then it will print the following output:

\AyaKeyword{data}\hspace{0.5em}\AyaData{Int}\hspace{0.5em}\AyaKeyword{where}~\\
+\hspace{1.0em}\AyaConstructor{zero}\hspace{0.5em}:\hspace{0.5em}\AyaData{Int}~\\
+\hspace{1.0em}\AyaConstructor{succ}\hspace{0.5em}:\hspace{0.5em}\AyaData{Int}\hspace{0.5em}≃\hspace{0.5em}\AyaData{Int}

You may add -o hello.tex to let it write to a file instead of printing to the console. With minimal configurations such as below, you can compile it with any LaTeX toolchain:

tex
\usepackage{newunicodechar}
+\newunicodechar{≃}{\ensuremath{\mathrel{\simeq}}}
+
+\usepackage{xcolor}
+
+% Aya highlighting
+\definecolor{AyaFn}{HTML}{00627a}
+\definecolor{AyaConstructor}{HTML}{067d17}
+\definecolor{AyaStruct}{HTML}{00627a}
+\definecolor{AyaGeneralized}{HTML}{00627a}
+\definecolor{AyaData}{HTML}{00627a}
+\definecolor{AyaPrimitive}{HTML}{00627a}
+\definecolor{AyaKeyword}{HTML}{0033b3}
+\definecolor{AyaComment}{HTML}{8c8c8c}
+\definecolor{AyaField}{HTML}{871094}
+\newcommand\AyaFn[1]{\textcolor{AyaFn}{#1}}
+\newcommand\AyaConstructor[1]{\textcolor{AyaConstructor}{#1}}
+\newcommand\AyaCall[1]{#1}
+\newcommand\AyaStruct[1]{\textcolor{AyaStruct}{#1}}
+\newcommand\AyaGeneralized[1]{\textcolor{AyaGeneralized}{#1}}
+\newcommand\AyaData[1]{\textcolor{AyaData}{#1}}
+\newcommand\AyaPrimitive[1]{\textcolor{AyaPrimitive}{#1}}
+\newcommand\AyaKeyword[1]{\textcolor{AyaKeyword}{#1}}
+\newcommand\AyaLocalVar[1]{\textit{#1}}
+\newcommand\AyaComment[1]{\textit{\textcolor{AyaComment}{#1}}}
+\newcommand\AyaField[1]{\textcolor{AyaField}{#1}}

The following code provides a quick macro to include the generated code:

tex
\newcommand{\includeFlcl}[1]{{
+\vspace{0.15cm}
+\RaggedRight
+% https://tex.stackexchange.com/a/35936/145304
+\setlength\parindent{0pt}
+\setlength{\leftskip}{1cm}
+\input{#1}
+
+\setlength{\leftskip}{0cm}
+\vspace{0.15cm}
+}}

Use \includeFlcl{hello} to include the generated code in your document.

+ + + + \ No newline at end of file diff --git a/guide/haskeller-tutorial.html b/guide/haskeller-tutorial.html new file mode 100644 index 0000000..f6855d8 --- /dev/null +++ b/guide/haskeller-tutorial.html @@ -0,0 +1,101 @@ + + + + + + So you know some Haskell | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

So you know some Haskell

Great. I expect you to know something about GHCi and algebraic data types. This is an Aya tutorial for Haskell programmers. If you find a bug, open an issue on GitHub!

Working with the REPL

Aya has a REPL that works similar to GHCi. You can start it by running aya -i in your terminal, and you can start typing definitions or expressions.

bash
aya -i

If you're using jar with java, use the following instead:

bash
java --enable-preview -jar cli-fatjar.jar -i

In the REPL, you can use :l to load a file, :q to quit, and :? to get help. Use :t to show the type. Since it's dependent type, you can toggle normalization levels by :normalize followed by NF, WHNF, or NULL (don't normalize).

To work multiline, use the pair :{ and :} -- same as GHCi.

Aya supports pretty-printing of any terms, including ✨lambdas✨. Note that Aya does not automatically support generic lambdas, so typing \x => x would not work. You need to specify the type of x, like \(x : Int) => x.

Aya support fn as an alias to \ instead of λ, similar to Coq and Lean (but not Agda). This is because users (especially mathematicians) are likely to use λ as a variable name. Similarly, we used Fn over Pi or Π for the same reason.

Working with projects

Read project-tutorial, it is very short. It is recommended to practice the following with an Aya project in VSCode, see vscode-tutorial.

About modules:

  • Aya module names are separated by ::, not ..
  • Aya infers the module names automagically, using the same rule as of Haskell.
  • Aya imports (import X) are qualified by default, use open import X to unqualify. This is short for import X followed by open X.
  • Aya supports restricted import open import X using (x) (this only imports x from X) you may also use open import X hiding (x) to import everything except x from X.
  • Aya supports renamed import open import X using (x as y) and the meaning is obvious.
  • To re-export, use a public open.

Ok, let's write some code!

Programming in Aya

Natural numbers. In Haskell:

haskell
data Nat = Zero | Suc Nat

In Aya (we replaced the keyword data with inductive because we want to use it as a package name):

inductive Nat | zero | suc Nat
+

We don't enforce capitalization of constructors. The constructors need to be qualified (like Nat::zero) to access. As you may expect, Nat automatically becomes a module, so we can use open and public open to unqualify the constructors.

Bonus: if you define a data type that looks like Nat, then you can use numeric literals.

Functions are defined with def, followed by pattern matching. Consider this natural number addition in Haskell (intentionally not called + to avoid name clash with Prelude):

haskell
(<+>) :: Nat -> Nat -> Nat
+Zero <+> n = n
+Suc m <+> n = Suc (m <+> n)
+
+infixl 6 <+>

In Aya (remember the numeric literal thing?):

open Nat
+def infixl <+> Nat Nat : Nat
+| 0, nn
+| suc m, nsuc (m <+> n)
+

There are plenty of differences. Let's go through them one by one.

The infixl declares <+> to be a left-associative infix operator. Other options include infix, infixr, fixl, and fixr. Without it, the function will work the same as normal function. Unlike Haskell, we do not distinguish "operator" names and "function" names.

We do not use a number to denote precedence, but a partial order. This allows arbitrary insertion of new precedence level into previously defined ones. Say you want <+> to have a lower precedence than <*>, you can do:

def infixl <+> Nat Nat : Nat
+/// .... omitted
+looser <*>

You also have tighter, with the obvious meaning.

The parameters and the return type are separated using :. The parameter types can be written directly, without ->. Aya allow naming the parameters like this:

def oh (x : Nat) : Nat

These names can be used for one-linear function bodies:

def oh (x : Nat) : Natx
+

Aya supports a painless version of the section syntax, where the top-level does not need parentheses. See the following REPL output (the underscored names are internally generated variable names. If you have an idea on how to make them better, open an issue and let's discuss!).

> 1 <+>
+suc
+
+> <+> 1
+λ _7 ⇒ _7 <+> 1
+
+> 1 <+> 1
+suc 1
+
+> 2 <+>
+λ _5 ⇒ suc (suc _5)
+
+> <+> 2
+λ _7 ⇒ _7 <+> 2

When we only need to pattern match on a subset of the parameters, we can use the elim keyword:

example def infixl [+] (a n : Nat) : Nat elim a
+| 0 ⇒ n
+| suc msuc (m [+] n)
+

Type-level programming

In Haskell:

haskell
id :: a -> a
+id x = x

In Aya:

def id {A : Type} (x : A) ⇒ x
+

Observations:

  • Type parameters have to be explicitly qualified using curly braces.
  • Curly braces denote parameters that are omitted (and will be inferred by type checker) in the pattern matching and invocations. So, parentheses denote parameters that are not omitted.
  • Apart from Type, we also have Set, and ISet. For now, don't use the others.

Type constructors are like {F : Type -> Type} (and yes, the -> denotes function types, works for both values and types), very obvious. Definition of Maybe in Aya:

open inductive Maybe (A : Type)
+| nothing
+| just A
+

Here, (A : Type) is an explicit parameter, because you write Maybe Nat, not just Maybe.

There is a way to automagically insert the implicit parameters -- the variable keyword.

variable A : Type
+
+// Now, since you are using A, so Aya inserts {A : Type}
+example def id (x : A) ⇒ x
+

Aya supports type aliases as functions. For example, we may define the type of binary operators as a function:

def BinOp (A : Type) ⇒ AAA
+

Then, we can define <+> as:

example def infixl <+> : BinOp Nat
+| 0, nn
+| suc m, nsuc (m <+> n)
+

Type families

In Aya, type families are functions. Consider the following code (they are using the variable A defined above):

// Unit type
+open inductive Unit | unit
+
+// A type family
+def FromJust (x : Maybe A) : Type
+| just aA
+| nothingUnit
+
+// A function that uses the type family
+def fromJust (x : Maybe A) : FromJust x
+| just aa
+| nothingunit
+

And fromJust (just a) will evaluate to a. In Haskell, you need to use some language extensions alongside some scary keywords. These functions are available in constructors, too:

inductive Example (A : Type)
+| cons (x : Maybe A) (FromJust x)
+

It is recommended to play with it in the REPL to get a feel of it.

There is a famous example of dependent types in Haskell -- the sized vector type:

haskell
{-# LANGUAGE GADTs #-}
+{-# LANGUAGE DataKinds #-}
+-- Maybe you need more, I don't remember exactly
+
+data Vec :: Nat -> Type -> Type where
+  Nil :: Vec Zero a
+  (:<) :: a -> Vec n a -> Vec (Suc n) a
+infixr :<

In Aya, we have a better syntax:

open inductive Vec (n : Nat) (A : Type)
+| 0, Anil
+| suc n, Ainfixr :< A (Vec n A)
+

The :< constructor is defined as a right-associative infix operator. And yes, you can define like vector append painlessly:

variable m n : Nat
+
+def infixr ++ (Vec n A) (Vec m A) : Vec (n <+> m) A
+| nil, ysys
+| x :< xs, ysx :< xs ++ ys
+tighter :<
+

Imagine how much work this is in Haskell.

Overlapping patterns

There is one more bonus: in Aya, you may modify the definition of <+> to be:

overlap def infixl <+> Nat Nat : Nat
+| 0, n => n
+| n, 0 => n
+| suc m, n => suc (m <+> n)

It says we not only compute 0 + n = n, but when the first parameter is neither 0 nor suc, we may take a look at the second parameter and seek for other potential computations. This is completely useless at runtime, but very good for type checking. For instance, we may want a Vec of size n, and what we have is some Vec of size n + 0. Then having n + 0 to directly reduce to n is very useful, otherwise we will need to write a conversion function that does nothing but changes the type, or use unsafeCoerce.

With n + 0 = n judgmentally, we now have more possibilities. For instance, we can make xs ++ nil = xs. This involves in two steps: we first turni ++ into a overlap def, then we add the following clause to ++:

| xs, nil => xs

This makes ++ compute on more cases too.

For more information about this feature, checkout the tutorial for proof assistant users.

+ + + + \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 0000000..6295688 --- /dev/null +++ b/guide/index.html @@ -0,0 +1,27 @@ + + + + + + The Aya Prover | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

The Aya Prover

Aya is a programming language and an interactive proof assistant designed for type-directed programming and formalizing math.

The type system of Aya has the following highlights:

  • Set-level cubical features so funExt and quotients are available without axioms (like Agda, redtt, and Arend but not higher-dimensional),
  • Overlapping and order-independent pattern matching makes simple functions compute better,
  • Practical functional programming features similar to Haskell and Idris: dependent pattern matching, typed holes, enchanted synthesis of implicit arguments.

The implementation of the Aya compiler has the following highlights:

  • Efficient type checking by JIT-compiling well-typed definitions to JVM higher-order abstract syntax, so substitution does not traverse terms,
  • Convenient interactive tools such as a language server for VSCode, a REPL, and hyperlinked document generation (demo),
  • Pre-compiled binary release.
+ + + + \ No newline at end of file diff --git a/guide/install.html b/guide/install.html new file mode 100644 index 0000000..f046a33 --- /dev/null +++ b/guide/install.html @@ -0,0 +1,52 @@ + + + + + + Install Aya | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Install Aya

At this stage of development, we recommend using the nightly version of Aya. Go to GitHub Release, there will be a plenty of files. It's updated per-commit in the main branch, but the release date displayed is very old and is an issue of GitHub itself.

Checking the section below that fits your platform. After the installation, run aya --help for general instructions and aya -i to start an interactive REPL. If you chose the jlink version, the bin folder contains the executable scripts.

Download from GitHub Release

Aya is available for Windows, Linux, and macOS, as listed below.

x64aarch64
Windowszipzip
Linuxzipzip
macOSzipzip

Here's a hands-on script I wrote to (re)install Aya to $AYA_PREFIX (define the variable somewhere or replace with your preferred prefix, e.g. /opt/aya) on Linux x64:

bash
#!/bin/bash
+sudo mkdir -p ${AYA_PREFIX:-/tmp}
+sudo chown $USER ${AYA_PREFIX:-/tmp}
+rm -rf ${AYA_PREFIX:-/tmp}/*
+cd ${AYA_PREFIX:-/tmp}
+wget https://github.com/aya-prover/aya-dev/releases/download/nightly-build/aya-prover_jlink_linux-x64.zip
+unzip aya-prover_jlink_linux-x64.zip
+rm aya-prover_jlink_linux-x64.zip
+cd -

If it's the first time you install Aya, you may want to do (or replace ~/.bashrc with your shell's rc file):

bash
echo 'export PATH="$AYA_PREFIX/bin:$PATH"' >> ~/.bashrc
+source ~/.bashrc

Use Aya in GitHub Actions

If you want to use Aya in your GitHub Actions workflow, you can use aya-prover/setup-aya like

yaml
- name: Setup Aya
+  uses: aya-prover/setup-aya@latest
+  with:
+    version: 'nightly-build'

The step above will install the latest version of Aya to PATH. You can find the complete example here.

If you already have Java runtime...

Very cool! Now you can try the prebuilt jars (much smaller and platform-independent) or build Aya from source.

We will (hopefully) always be using the latest release of Java, rather than LTS, unless there are breaking changes on the byte code format.

Prebuilt binary

Download the jar version of cli (for using command line) and lsp (for using VSCode) and run it with java --enable-preview -jar [file name].jar.

Build from source

Clone the repository. Then, run build with ./gradlew followed by a task name. If you have problems downloading dependencies (like you are in China), check out how to let gradle use a proxy.

bash
# build Aya and its language server as applications to `ide-lsp/build/image/current`
+# the image is usable in Java-free environments 
+./gradlew jlinkAya --rerun-tasks
+# build Aya and its language server as executable
+# jars to <project>/build/libs/<project>-<version>-fat.jar
+./gradlew fatJar
+# build a platform-dependent installer for Aya and its language
+# server with the jlink artifacts to ide-lsp/build/jpackage
+# requires https://wixtoolset.org/releases on Windows
+./gradlew jpackage
+# run tests and generate coverage report to build/reports
+./gradlew testCodeCoverageReport
+# (Windows only) show the coverage report in your default browser
+./gradlew showCCR

Gradle supports short-handed task names, so you can run ./gradlew fJ to invoke fatJar, tCCR to invoke testCodeCoverageReport, and so on.

+ + + + \ No newline at end of file diff --git a/guide/project-tutorial.html b/guide/project-tutorial.html new file mode 100644 index 0000000..82b7db2 --- /dev/null +++ b/guide/project-tutorial.html @@ -0,0 +1,43 @@ + + + + + + Aya Package | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Aya Package

An Aya project consists of a directory with a aya.json file (project metadata) and a src directory for source code. Here's a sample aya.json:

json
{
+  "ayaVersion": "0.31",
+  // ^ The version of Aya you are using -- for compatibility checks
+  "name": "<project name>",
+  "version": "<project version>",
+  "group": "<project group>",
+  // ^ The group is used to distinguish different projects with the same modules
+
+  "dependency": {
+    "<name of dependency>": {
+      "file": "<directory to your dependency>"
+    },
+    // We plan to support other sources of dependencies,
+    // but we do not have money to
+    // host a package repository for now.
+  }
+}

To build a project, run aya --make <parent dir of aya.json> (incremental). For force-rebuilding, replace --make with --remake. For jar users, run java --enable-preview -jar cli-fatjar.jar --make <parent dir of aya.json>.

+ + + + \ No newline at end of file diff --git a/guide/prover-tutorial.html b/guide/prover-tutorial.html new file mode 100644 index 0000000..9db5b96 --- /dev/null +++ b/guide/prover-tutorial.html @@ -0,0 +1,124 @@ + + + + + + Proof assistants' user tutorial | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Proof assistants' user tutorial

Great. I expect you to have basic experience with interactive theorem proving. This is another Aya tutorial for interactive theorem prover users. If you find a bug, open an issue on GitHub!

This tutorial will use some basic Aya syntax. I hope those are sufficiently intuitive, or you can look up this tutorial.

Here's a little prelude, which you do not need to understand now.

prim I
+prim coe (r s : I) (A : IType) : A rA s
+prim Path
+variable A B : Type
+def infix = (a b : A) ⇒ Path (\iA) a b
+
+open inductive Nat
+| zero
+| suc Nat
+

Function extensionality

Consider the following code:

open inductive Bool | true | false
+def not Bool : Bool
+| truefalse
+| falsetrue
+
+def id (x : Bool) ⇒ x
+
+def Goalid = (fn xnot (not x))
+
+// {??} is the syntax for typed holes in Aya:
+// def question : Goal => {??}
+

There is no way to prove it in Martin-Löf type theory or Calculus of Constructions. However, you are very smart and realized you can instead show the following:

def Goal' (x : Bool) ⇒ id x = not (not x)
+

This is pretty much the same theorem!

Now, suppose we need to show a propositional equality between two records. This means we have to show they're memberwise equal. One record has a member \ p0not (not p0), and the other has id. This time, you cannot cheat by changing the goal type. You post the question on some mailing list and people are telling you that the alternative version of the theorem you have shown does not imply the original, unless "function extensionality" is a theorem in your type theory.

To have function extensionality as a theorem, you came across two distinct type theories: observational type theory and cubical type theory. Aya chose the latter.

Cubical

Here's the proof of function extensionality in Aya:

def funExt (f g : AB) (p :  af a = g a) : f = g
+   ⇒ fn i ap a i
+

Aya has a "cubical" equality type that is not inductively defined. An equality a = b for a, b : A is really just a function IA (as we can see from the proof construction, for f = g we prove it by a lambda abstraction) where:

  • I is a special type that has two closed instances 0 and 1, and we think of there being a propositional equality between 0 and 1, and there is no pattern matching operation that distinguishes them. So, every function that maps out of I must preserve this judgmental equality.
  • For f : I -> A, the corresponding equality type is f 0 = f 1. Hypothetically, let f be the identity function, and we get a propositional equality between 0 and 1, but for technical reasons we don't talk about equality between 0 and 1 directly.

By this definition, we can "prove" reflexivity by creating a constant function:

def refl {a : A} : a = afn ia
+

For f = fn i => a, we need to verify if f 0 equals the left-hand side of the equality and f 1 equals the right-hand side, which are both true.

And to show that f = g, it suffices to construct a function q : I -> (A -> B) such that q 0 = f and q 1 = g. This is true for the proof above:

  (fn i a => p a i) 0    β-reduce
+= fn a => p a 0          p a : f a = g a
+= fn a => f a            η-reduce
+= f

We may also prove the action-on-path theorem, commonly known as cong, but renamed to pmap to avoid a potential future naming clash:

def pmap (f : AB) {a b : A} (p : a = b) : f a = f b
+   ⇒ fn if (p i)
+

Checking the above definition is left as an exercise.

However, we cannot yet define transitivity/symmetry of equality because we do not have the traditional elimination rule of the equality type -- the J rule. This will need some advanced proving techniques that are beyond the scope of this simple tutorial, so I'll skim them.

We may define the type-safe coercion using it, and this will help us prove the two lemmas about equality:

def cast (p : A  = B) : AB coe 0 1 (fn ip i)
+

Then, from p : a = b we construct the equivalence (a = a) = (b = a) and coerce along this equivalence:

def pinv {a b : A} (p : a = b) : b = acast (\ip i = a) refl
+

From q : b = c we construct the equivalence (a = b) = (a = c) and coerce along this equivalence:

def concat {a b c : A} (p : a = b) (q : b = c) : a = c ⇒
+  cast (\ia = q i) p
+

Note that at this point you can already do a bunch of familiar proofs about some simple types such as natural numbers or sized vectors. These are left as exercises, and you are encouraged to try yourself if you are not very sure about how it feels to prove things in Aya.

Overlapping and Order-independent Pattern Matching

Remember the +-comm proof that you need two lemmas? It is standard to define + in the following way:

example def infix + Nat Nat : Nat
+| 0, nn
+| suc m, nsuc (m + n)
+

And then you prove that a + 0 = a and a + suc b = suc (a + b). It is tempting to have | n, 0 => n as a computation rule as well, but this is incompatible with the usual semantics of pattern matching, which is compiled to elimination principles during type checking. However, you can do that in Aya. You may also add the other lemma as well.

overlap def infix + Nat Nat : Nat
+| 0, nn
+| n, 0 ⇒ n
+| suc m, nsuc (m + n)
+| m, suc nsuc (m + n)
+tighter =
+

This makes all of them definitional equality. So, +-comm can be simplified to just one pattern matching:

def +-comm (a b : Nat) : a + b = b + a elim a
+| 0 ⇒ refl
+| suc _ ⇒ pmap suc (+-comm _ _)
+

Note that we are using the elim keyword, which describes the variables that the function body is pattern matching on.

Heterogeneous equality

When working with indexed families, you may want to have heterogeneous equality to avoid having mysterious coercions. For example, consider the associativity of sized vector appends. We first need to define sized vectors and the append operation:

variable n m o : Nat
+// Definitions
+open inductive Vec (n : Nat) (A : Type)
+| 0, Anil
+| suc n, Ainfixr :< A (Vec n A)
+overlap def infixr ++ (Vec n A) (Vec m A) : Vec (n + m) A
+| nil, ysys
+| ys, nilys
+| x :< xs, ysx :< xs ++ ys
+tighter :< =
+

It is tempting to use the below definition:

overlap def ++-assoc (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  : (xs ++ ys) ++ zs = xs ++ (ys ++ zs) elim xs
+| nil => refl
+| x :< xs => pmap (x :<) (++-assoc xs ys zs)

However, this definition is not well-typed:

  • (xs ++ ys) ++ zs is of type Vec ((n + m) + o) A
  • xs ++ (ys ++ zs) is of type Vec (n + (m + o)) A.

They are not the same! Fortunately, we can prove that they are propositionally equal. We need to show that natural number addition is associative, which is the key lemma of this propositional equality:

def +-assoc {a b c : Nat} : (a + b) + c = a + (b + c) elim a
+| 0 ⇒ refl
+| suc _ ⇒ pmap suc +-assoc
+

Now we can work on the proof of ++-assoc. Here's a lame definition that is well-typed in pre-cubical type theory, and is also hard to prove -- we cast one side of the equation to be other side. So instead of:

xs ++ (ys ++ zs) = (xs ++ ys) ++ zs

We show:

f (xs ++ (ys ++ zs)) = (xs ++ ys) ++ zs

Where f is a function that changes the type of the vector, implemented using cast. The definition looks like this:

example def ++-assoc-ty (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  ⇒ cast (pmap (fn nVec n A) +-assoc) ((xs ++ ys) ++ zs) = xs ++ (ys ++ zs)
+

It is harder to prove because in the induction step, one need to show that cast (pmap (\ p0Vec p0 A) +-assoc) is equivalent to the identity function in order to use the induction hypothesis. For the record, here's the proof:

def castRefl (a : A) : cast  refl a = afn icoe i 1 (fn jA) a
+

But still, with this lemma it is still hard. Cubical provides a pleasant way of working with heterogeneous equality:

def Path' (A : IType) (a : A 0) (b : A 1) ⇒ Path A a b
+

So if we have X : A = B and a : A, b : B, then Path (\i => X i) a b expresses the heterogeneous equality between a and b nicely.

We may then use the following type signature:

def ++-assoc-type (xs : Vec n A) (ys : Vec m A) (zs : Vec o A)
+  ⇒ Path (fn iVec (+-assoc i) A) ((xs ++ ys) ++ zs) (xs ++ (ys ++ zs))
+

The proof is omitted (try yourself!).

Quotient inductive types

Quotient types are types that equates their instances in a non-trivial way. In Aya, they are defined using the following syntax:

open inductive Interval
+| left
+| right
+| line : left = right
+

This is an uninteresting quotient type, that is basically Bool but saying its two values are equal, so it's really just a unit type, with its unique element being the equivalence class of left and right.

If you're familiar with a proof assistant with an intensional equality like Coq/Agda/Lean/etc., you might find this surprising because a unit type shall not have two distinct elements, and an equality shall not be stated between two distinct constructors. How does this work in Aya?

Actually, in these systems, the equality is defined inductively, and it only has one constructor -- refl. This is not how equality is defined in Aya, so we can cook some interesting equality proofs into it, which includes these equality-looking constructors.

  1. The type of line will be translated into IInterval together with the judgmental equality that line 0 is left and line 1 is right, basically a desugaring of the equality with additional features. This makes line a valid constructor in normal type theory: it takes some parameters and returns Interval.
  2. These judgmental equalities need to be preserved by the elimination rule of Interval. Here is an example elimination:
example def Interval-elim {a b : A} {p : a = b} (i : Interval) : A elim i
+| lefta
+| rightb
+| line jp j
+

Note that the term pmap Interval-elim line, which reduces to p, has type Interval-elim left = Interval-elim right, so we need to check if p 0 equals Interval-elim left, and p 1 equals Interval-elim right. This is a confluence check that ensures the elimination is well-defined.

What's interesting about this type, is that its elimination implies function extensionality:

private def lemma
+  (f g : AB) (p :  xf x = g x)
+  (i : Interval) (a : A) : B elim i
+| leftf a
+| rightg a
+| line jp a j
+
+example def funExt' (f g : AB) (p :  af a = g a) : f = g ⇒
+  pmap (lemma f g p) (fn iline i)
+

Note that even though we are using equation combinators like pmap which are implemented using path application and abstraction, it is not considered cheating because these are already theorems in MLTT anyway.

We can define other interesting quotients such as a symmetric integer:

open inductive Int
+| pos Nat | neg Nat
+| zro : pos 0 = neg 0
+

Some operations on Int:

def succ Int : Int
+| pos npos (suc n)
+| neg 0 ⇒ pos 1
+| neg (suc n) ⇒ neg n
+| zro ipos 1
+
+def abs Int : Nat
+| pos nn
+| neg nn
+| zro _ ⇒ 0
+

The succ operator has the first three clauses straightforward, and the last one is a proof of succ (neg 0) equals succ (pos 0), as we should preserve the judgmental equality in the type of zro. We need to do the same for abs.

+ + + + \ No newline at end of file diff --git a/guide/readings.html b/guide/readings.html new file mode 100644 index 0000000..047bd4f --- /dev/null +++ b/guide/readings.html @@ -0,0 +1,27 @@ + + + + + + Recommended Reading | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

Recommended Reading

This is a list of documents that are helpful or simply related to the design & implementation of Aya, randomly ordered.

Beware that you are encouraged to suggest changes to this page! Just go to the bottom of this page and there will be a link. Apart from this list, Jon Sterling's cubical bibliography is also a good source of information.

General Type Theory

Universes

Equality in Type Theory

Cubical Type Theory

Implementation

Miscellaneous

  • Coq's Vibrant Ecosystem for Verification Engineering, by Andrew W. Appel
    CPP 2022
  • The End of History? Using a Proof Assistant to Replace Language Design with Library Design, by Adam Chlipala, Benjamin Delaware, Samuel Duchovni, Jason Gross, Clément Pit-Claudel, Sorawit Suriyakarn, Peng Wang, Katherine Ye
    SNAPL 2017
+ + + + \ No newline at end of file diff --git a/guide/vscode-tutorial.html b/guide/vscode-tutorial.html new file mode 100644 index 0000000..9ca895c --- /dev/null +++ b/guide/vscode-tutorial.html @@ -0,0 +1,27 @@ + + + + + + So you are using VSCode | Aya Prover + + + + + + + + + + + + + + + + +
Skip to content

So you are using VSCode

Go to GitHub Releases, click the latest successful run, scroll down to the bottom of the page, download the "aya-prover-vscode-extension", and unzip it. Then, follow VSCode docs to install the extension.

It remains to configure the Aya language server. There are two ways to use the server. First, open settings, search for "Aya path", you should see a text box. Then, you have a choice:

  1. Use a jar file. Put your lsp-fatjar.jar file path there. Make sure you have a java executable in the Path (recommended) or in java.home key in the settings json.
  2. Use the jlink version of Aya. Put the aya-lsp (or aya-lsp.bat if you are on Windows) file path there, which is under the bin folder of the jlink distribution. In this case, you don't need to have a java executable in the Path.

Then, open a directory that is an Aya project (see project-tutorial). Open any .aya file, you should see some basic highlight (keywords, comments, etc.). Wait for VSCode to activate the extension, and hit Ctrl+L Ctrl+L to load the file. At this point, you should see advanced highlight (type names, constructors, etc.), with clickable definitions.

The rest of the features should be quite discoverable for regular programmers, such as hovering a red or a yellow wavy line to see the error message, etc. Please create issues and discuss ideas on how to improve the error reports.

+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 0000000..a258bb4 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"blog_binops.md":"BnuGOt04","blog_bye-hott.md":"NGE4GKmU","blog_class-defeq.md":"XvEV7HU1","blog_extended-pruning.md":"CuhyEVbT","blog_ind-prop.md":"BgOiB5U1","blog_index-unification.md":"DR8rUZJu","blog_index.md":"DR7jCmfM","blog_lang-exts.md":"hyGXHWfR","blog_path-elab.md":"DXdo4WbU","blog_pathcon-elab.md":"CriMvQIQ","blog_redirect.md":"Ch6PGAGu","blog_tt-in-tt-qiit.md":"BjrgqciZ","guide_fake-literate.md":"5HoY67ds","guide_haskeller-tutorial.md":"GKsyNqV0","guide_index.md":"Bb5oyrEG","guide_install.md":"Cs_zw_W1","guide_project-tutorial.md":"CaWZTWm8","guide_prover-tutorial.md":"C3VZY-zt","guide_readings.md":"DU4j-4Ox","guide_vscode-tutorial.md":"Bwg1aD-U","index.md":"ukG0WVuo","pubs_index.md":"DjeH4wTt"} diff --git a/header.jpg b/header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8894855ee414e7442b61f1cd85062521bcc9495d GIT binary patch literal 625784 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

; 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

;y_J?dG9k}kwyBA}kA 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 z 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

Skip to content

Binary operators in Aya

We have designed a binary operator system in Aya which happens to be (we didn't copy!) very similar to Rhombus (a.k.a. Racket 2) and Swift 5.7.

TL;DR: it supports making any identifier a custom operator with precedences specified by a partial ordering. Left and right associativities are supported.

The precedence and associativity information is bound to a name, not a definition. This means we can import a name from another module with changes to its name, associativity, and precedence. Importing with renaming is an established feature, but changing associativity and precedence is not that popular (though implemented in Agda already).

Here are some code examples (implementations are omitted for simplicity):

-- Left-associative
+def infixl + (x y : Nat) : Nat => {??}
+-- Left-associative, bind tighter than +
+def infixl * (x y : Nat) : Nat => {??} tighter +
+-- Prefix operator
+def fixl ! (x : Nat) : Nat => {??}
+-- Postfix operator
+def fixr ? (x : Nat) : Nat => {??}

The tighter keyword works like this: when there are expressions like a * b + c which may either mean (a * b) + c or a * (b + c), we will put the tighter operator in the parenthesis. In case we found the two operators share the same priority, Aya will report an error.

With imports, it looks like this:

open import Primitives using (
+  invol       as fixl  ~  tighter =, \/, /\,
+  intervalMin as infix /\ tighter \/,
+  intervalMax as infix \/,
+)

Specifying operator precedences with a partial ordering is way better than with a number. In Haskell, if we already have infix 3 + and infix 4 * and we hope to add a new operator which has higher precedence than + but lower than *, it's going to be impossible. Agda introduced float-point precedence levels to address the issue, but I think it does not solve the essential problem: that I have to lookup the numbers (of existing operator precedences) every time I write a new operator.

In the future, we plan to support mixfix operators as in Agda (the current framework can support mixfix easily, but abusing mixfix notations can harm readability).