From b3ca4c523e08963be41d9ecec20bf79efdcb9954 Mon Sep 17 00:00:00 2001 From: Liam O'Connor Date: Wed, 2 Sep 2026 20:36:08 +1000 Subject: [PATCH] fairly decent sidebar behaviour now. --- forest/theme/holbert.css | 92 ++++++++++++++-- forest/theme/index-bsTLl1gN.js | 38 +++---- forest/theme/outside-click.js | 14 +++ forest/theme/resizable.js | 11 +- forest/trees/theorem.tree | 2 +- src/HOMethods.res | 20 ++-- src/HOTerm.res | 10 ++ src/Method.res | 119 +++++++++++--------- src/ProofView.res | 195 ++++++++++++++++++++------------- src/Rewrite.res | 53 +++++---- src/SExp.res | 11 +- src/Signatures.res | 2 +- src/Theorem.res | 30 ++++- 13 files changed, 403 insertions(+), 194 deletions(-) diff --git a/forest/theme/holbert.css b/forest/theme/holbert.css index e0100a8..fdc8561 100644 --- a/forest/theme/holbert.css +++ b/forest/theme/holbert.css @@ -69,7 +69,6 @@ src: local('Neo Euler Medium'), url('/euler.woff') format('woff'); } .axiom { display:inline-block; - margin-right:10px; margin-bottom:5px; margin-top:5px; vertical-align: bottom; @@ -79,6 +78,9 @@ src: local('Neo Euler Medium'), url('/euler.woff') format('woff'); white-space:normal; line-height:1.00; } +.axiom-set > .axiom { + margin-left:15px; +} .inline-rule > span > div { display:inline-block; } @@ -312,15 +314,17 @@ display:block; } .proof-assumptions-Hybrid > li { display: inline-block; + margin-left:10px; } .proof-tree { padding:10px; } .proof-assumptions-Gentzen > li { display: inline-block; + margin-left:10px; } .axiom-set-Linear > section > details > .inline-rule { -display:block; + display:block; } .proof-text { font-style:italic; @@ -345,6 +349,7 @@ display:block; border-top: 1px solid rgba(1, 1, 1, 0.2); } .proof-step { + overflow:scroll; padding-left: 5px; padding-right: 5px; margin-bottom: 5px; @@ -423,10 +428,42 @@ display:block; cursor: ew-resize; z-index: 1; } +.results-group { + padding-top: 0.2rem; + padding-bottom: 0.4rem; + border-top: 1px solid var(--group-border, #eee); +} +.results-group:first-child { + border-top: none; + padding-top: 0; +} + +.results-group-label { + font-size: 0.75rem; + font-weight: 600; + padding-left: 7px; + text-transform: uppercase; + letter-spacing: 0.03em; + color: var(--group-label-color, #888); +} + +.results-group-items { + display: block; +} .resize-handle:hover { background: rgba(0, 0, 0, 0.08); } + +.results-group:has(> .results-group-label .assumptions-label) { + margin-top: 0px; + margin-bottom: 0; + padding-top:0.2rem; + background: var(--assumptions-bg, #fff); + border-radius: 6px; + border-top: none; +} + .sidebar-content { position: fixed; top: 0; @@ -437,17 +474,24 @@ display:block; display: flex; flex-direction: column; min-width: 260px; - max-width: 360px; + width: 280px; background: var(--sidebar-bg, #fafafa); border-left: 1px solid var(--sidebar-border, #ddd); box-shadow: -2px 0 8px rgba(0, 0, 0, 0.12); font-size: 0.9rem; overflow: hidden; } - +.sidebar-goal-judgment { + padding-left: 0.4rem; +} +.sidebar-rule { + border-top: 1px solid var(--sidebar-border, #ddd); +} .sidebar-goal { flex: 0 0 auto; - padding: 0.75rem 1rem; + padding: 0.75rem 0.75rem; + font-family: 'Neo Euler Medium'; + font-size: large; border-bottom: 1px solid var(--sidebar-border, #ddd); background: var(--sidebar-goal-bg, #fff); } @@ -456,16 +500,18 @@ display:block; flex: 1 1 auto; display: flex; flex-direction: column; - min-height: 0; /* required so the scrolling child below can actually shrink */ + min-height: 0; overflow: hidden; } - +.breadcrumbs:empty { + display: none; +} .breadcrumbs { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 0.25rem; - padding: 0.5rem 1rem 0; + padding: 0.5rem 0.5rem 0; } .breadcrumb-heading { @@ -476,6 +522,9 @@ display:block; background: var(--breadcrumb-bg, #eee); border-radius: 999px; white-space: nowrap; + display: inline-flex; + align-items: center; + gap: 0.3rem; } .breadcrumb-heading:not(:last-child)::after { @@ -484,6 +533,23 @@ display:block; color: var(--breadcrumb-arrow, #aaa); } +.breadcrumb-heading-current { + cursor: pointer; +} + +.breadcrumb-heading-current:hover { + background: var(--breadcrumb-hover-bg, #ddd); +} + +.breadcrumb-close { + font-size: 0.7rem; + opacity: 0.6; +} + +.breadcrumb-heading-current:hover .breadcrumb-close { + opacity: 1; +} + .back-button { align-self: flex-start; margin: 0.5rem 1rem 0; @@ -505,13 +571,15 @@ display:block; overflow-y: auto; display: flex; flex-direction: column; - gap: 0.3rem; - padding: 0.75rem 1rem; } - +.menu-options > button { + margin-right:7px; + margin-bottom:7px; +} .menu-options button { text-align: left; - padding: 0.45rem 0.7rem; + margin-left:7px; + margin-top:7px; border: 1px solid var(--sidebar-border, #ddd); border-radius: 6px; background: var(--action-bg, #fff); diff --git a/forest/theme/index-bsTLl1gN.js b/forest/theme/index-bsTLl1gN.js index faf6510..806c384 100644 --- a/forest/theme/index-bsTLl1gN.js +++ b/forest/theme/index-bsTLl1gN.js @@ -1,23 +1,23 @@ -(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))c(f);new MutationObserver(f=>{for(const o of f)if(o.type==="childList")for(const m of o.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&c(m)}).observe(document,{childList:!0,subtree:!0});function r(f){const o={};return f.integrity&&(o.integrity=f.integrity),f.referrerPolicy&&(o.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?o.credentials="include":f.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function c(f){if(f.ep)return;f.ep=!0;const o=r(f);fetch(f.href,o)}})();function Tv(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var yo={exports:{}},Nr={};var Up;function Ev(){if(Up)return Nr;Up=1;var n=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function r(c,f,o){var m=null;if(o!==void 0&&(m=""+o),f.key!==void 0&&(m=""+f.key),"key"in f){o={};for(var h in f)h!=="key"&&(o[h]=f[h])}else o=f;return f=o.ref,{$$typeof:n,type:c,key:m,ref:f!==void 0?f:null,props:o}}return Nr.Fragment=u,Nr.jsx=r,Nr.jsxs=r,Nr}var Hp;function xv(){return Hp||(Hp=1,yo.exports=Ev()),yo.exports}var v=xv();let Dr=[];function qp(n){return new Promise((u,r)=>{const c=new XMLHttpRequest;c.open("GET",n),c.responseType="document",c.onload=()=>{c.responseXML?u({doc:c.responseXML,contentType:c.getResponseHeader("content-type")||""}):r(new Error(`Failed to parse document at ${n}`))},c.onerror=()=>r(new Error(`Network error fetching ${n}`)),c.send()})}async function Gv(n){if(n in gn)return console.log(gn[n],"URL"),gn[n];{let u=n.split("/").slice(0,-1).join("/");const{doc:r,contentType:c}=await qp(u),f=/\bxml\b/i.test(c)&&!/html/i.test(c);let o;if(f){const{doc:m}=await qp("/default.xsl"),h=new XSLTProcessor;h.importStylesheet(m),o=h.transformToDocument(r)}else o=r;for(let m of jy)for(let h of o.querySelectorAll(m))window.customElements.upgrade(document.adoptNode(h));for(;Dr.length;)gn[Dr.shift()??""]?.initialise();if(n in gn)return gn[n];throw"ERROR"}}class Nv{url;component;subscribers;deps;status;addSubscriber(u){this.subscribers.push(u),this.status=="ready"&&u.dependencyReady(this.url)}initialise;dependencyReady;notifySubscribers;constructor(u,r,c,f,o,m){this.url=u,this.status="loading",this.deps={};let h=[];this.subscribers=[];for(let p of f)p!=""&&(h.push(p),this.deps[p]=null);this.component=null,this.notifySubscribers=function(p){if(console.log("NOTIFY",this.url,"subscriber count:",this.subscribers.length,this.subscribers.map(T=>T.url)),this.component!=null){for(let T of this.subscribers)T.component!=null&&T.component.dependencyChanged(this.url,this.component,p);window.localStorage.setItem(this.url,this.component.toString())}};let y=(p,T,A)=>{console.log("Setting up ",p,T),this.component=new o(p,T,$=>{this.notifySubscribers($)},$=>{this.status="ready",A&&queueMicrotask(()=>{for(let k of this.subscribers)k.dependencyReady(this.url)})},$=>{y(c,T,!1),this.notifySubscribers($)},m)};this.initialise=function(){for(let p in this.deps)Gv(p).then(T=>{this.deps[p]=T,T.addSubscriber(this)});h.length==0&&y(r,{},!0)},this.dependencyReady=function(p){let T=h.indexOf(p);if(T>-1&&h.splice(T,1),h.length==0){let A={};for(let $ in this.deps){let k=this.deps[$]?.component;k!=null&&k!=null&&(A[$]=k)}y(r,A,!0)}}}}let jy=[],gn={};function jv(n){let u=[];for(const r in n){const c=n[r];jy.push(r),window.customElements.define(r,class extends HTMLElement{constructor(){super();let f=this.attributes.getNamedItem("id")?.value??"default";Dr.push(f);let o=(this.attributes.getNamedItem("deps")?.value??"").trim().split(/\s+/).filter(Boolean);o=[...new Set(o)];let m=this.textContent,h=window.localStorage.getItem(f)??this.textContent;this.innerHTML="loading",this.id in gn?this.innerHTML="duplicate element":gn[this.id]=new Nv(this.id,h,m,o,c,this)}}),u.push(window.customElements.whenDefined(r))}Promise.all(u).then(()=>{for(;Dr.length;)gn[Dr.shift()??""]?.initialise()})}function he(n){return n===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:n.BS_PRIVATE_NESTED_SOME_NONE+1|0}:n}function Ec(n){if(n!=null)return he(n)}function be(n){if(n===null||n.BS_PRIVATE_NESTED_SOME_NONE===void 0)return n;let u=n.BS_PRIVATE_NESTED_SOME_NONE;if(u!==0)return{BS_PRIVATE_NESTED_SOME_NONE:u-1|0}}function Na(n,u){if(n<=0)return[];let r=new Array(n);for(let c=0;cu)}function $y(n,u){return nu?n:u}function Ov(n,u){if(u===0)throw{RE_EXN_ID:"Division_by_zero",Error:new Error};return n/u|0}function Rv(n,u){if(u===0)throw{RE_EXN_ID:"Division_by_zero",Error:new Error};return n%u}function Dv(n,u){return{hd:u,tl:n}}function $v(n){let u=n,r=0;for(;;){let c=r,f=u;if(f===0)return c;r=c+1|0,u=f.tl}}function Mv(n,u,r){for(;;){let c=r,f=u;if(c===0)return;n[f]=c.hd,r=c.tl,u=f+1|0}}function wv(n){let u=$v(n),r=new Array(u);return Mv(r,0,n),r}function zv(n){return n==null?!1:typeof n.RE_EXN_ID=="string"}function la(n){return zv(n)?n:{RE_EXN_ID:"JsExn",_1:n}}let go={};function Rt(n){let u=go[n];if(u!==void 0){let r=u+1|0;return go[n]=r,n+("/"+r)}return go[n]=1,n}function Cv(n){throw new Error("Panic! "+n)}function kv(n,u){if(n!==void 0&&u(be(n)))return n}function My(n,u){if(n!==void 0)return u(be(n))}function Qe(n,u){return n!==void 0?be(n):Cv(u!==void 0?u:"Option.getExn called for None value")}function um(n,u,r){return n!==void 0?r(be(n)):u}function tt(n,u){if(n!==void 0)return he(u(be(n)))}function Vc(n,u){if(n!==void 0)return u(be(n))}function Ee(n,u){return n!==void 0?be(n):u}function wr(n,u){return n!==void 0?n:u}function rm(n){return n!==void 0}function Bv(n){return n===void 0}function Uv(n,u,r){return n!==void 0?u!==void 0?r(be(n),be(u)):!1:u===void 0}function Hv(n,u,r){return n!==void 0?u!==void 0?r(be(n),be(u)):1:u!==void 0?-1:0}let qv=um,Vv=Ee;function Kl(n){if(n.TAG==="Ok")return n._0;throw{RE_EXN_ID:"Not_found",Error:new Error}}function wy(n,u,r){return n.TAG==="Ok"?r(n._0):u}function Rl(n,u){return n.TAG==="Ok"?{TAG:"Ok",_0:u(n._0)}:n}function xc(n,u){return n.TAG==="Ok"?u(n._0):n}function im(n,u){return n.TAG==="Ok"?n._0:u}function An(n){return n.TAG==="Ok"}function zy(n){return n.TAG!=="Ok"}function Xv(n,u,r){return n.TAG==="Ok"?u.TAG==="Ok"?r(n._0,u._0):!1:u.TAG!=="Ok"}function Lv(n,u,r){return n.TAG==="Ok"?u.TAG==="Ok"?r(n._0,u._0):1:u.TAG==="Ok"?-1:0}function Yv(n,u){if(n.TAG==="Ok")return u(n._0)}function Xc(n,u){return n.TAG==="Ok"?n:{TAG:"Error",_0:u(n._0)}}let Qv=wy,Zv=im,bo=Rt("Seq.InvalidArgument");function Tt(){return"End"}function bn(n){return()=>({TAG:"Next",_0:n,_1:Tt})}function Kv(n,u){return()=>({TAG:"Next",_0:n,_1:u})}function cm(n){let u=n();if(typeof u=="object")return[u._0,u._1]}function sm(n,u){return()=>{let r=n();return typeof r!="object"?u():{TAG:"Next",_0:r._0,_1:sm(r._1,u)}}}function Cy(n,u){return()=>{let r=n();return typeof r!="object"?"End":sm(u(r._0),Cy(r._1,u))()}}function ky(n){return()=>{let u=n();return typeof u!="object"?"End":sm(u._0,ky(u._1))()}}function Xr(n,u){return()=>{let r=n();return typeof r!="object"?"End":{TAG:"Next",_0:u(r._0),_1:Xr(r._1,u)}}}function Jv(n){let u=n();if(typeof u=="object")return he(u._0)}function Gc(n,u){for(;;){let c=cm(n);if(c===void 0)return;u(c[0]),n=c[1]}}function xu(n,u){return()=>{let r=u(n);return r!==void 0?{TAG:"Next",_0:r[0],_1:xu(r[1],u)}:"End"}}function Fv(n,u){return xu(0,r=>{if(r{if(r<=u)return[r,r+1|0]}):xu(n,r=>{if(r>=u)return[r,r-1|0]})}function vo(n,u,r){if(r.length===0)return My(wr(n,u),m=>{throw{RE_EXN_ID:bo,_1:"'fromArray' was invoked with am empty array, but you provided start and/or end indexes.",Error:new Error}}),Tt;let c=r.length,f=Ee(n,0),o=Ee(u,c-1|0);if(f<0||f>(c-1|0))throw{RE_EXN_ID:bo,_1:"The start index "+f.toString()+" is outside the array bounds.",Error:new Error};if(o<0||o>(c-1|0))throw{RE_EXN_ID:bo,_1:"The end index "+f.toString()+" is outside the array bounds.",Error:new Error};return Xr(Wv(f,o),m=>r[m])}function jo(n,u){let r=(c,f)=>(()=>{if(f===0)return"End";let o=c();return typeof o!="object"?"End":{TAG:"Next",_0:o._0,_1:r(o._1,f-1|0)}});return r(n,u)}function Iv(n,u){return xu(n,c=>{for(;;){let o=cm(c);if(o===void 0)return;let m=o[1],h=u(o[0]);if(h!==void 0)return[be(h),m];c=m}})}function Pv(n,u,r){let c={contents:u};return Gc(n,f=>{c.contents=r(c.contents,f)}),c.contents}function eA(n){return Pv(n,[],(u,r)=>(u.push(r),u))}function tA(n){return()=>{let u=cm(n);return u!==void 0?u[1]():"End"}}function Su(n,u){if(u>=0&&u=0&&u=c)return o;let h=n[o];if(!f(h,m))return o;r=o+1|0,u=h}}function Hy(n,u){let r=n.length;if(r===0||r===1)return r;let c=n[0],f=n[1];if(u(c,f)){let o=f,m=2;for(;;){let h=m,y=o;if(h>=r)return h;let p=n[h];if(!u(y,p))return h;m=h+1|0,o=p}}else return u(f,c)?-sA(n,f,2,r,u)|0:1}function Gt(n){return n!==void 0?n.h:0}function tl(n,u,r,c){let f=Gt(n),o=Gt(c);return{k:u,v:r,h:f>=o?f+1|0:o+1|0,l:n,r:c}}function ll(n,u){return{k:n,v:u,h:1,l:void 0,r:void 0}}function Vp(n,u){return u!==void 0?n!==void 0?n.h>=u.h:!1:!0}function fA(n,u){return n.v===u?n:{k:n.k,v:u,h:n.h,l:n.l,r:n.r}}function ta(n,u,r,c){let f=n!==void 0?n.h:0,o=c!==void 0?c.h:0;if(f>(o+2|0)){let y=n.l,p=n.r;return Gt(y)>=Gt(p)?tl(y,n.k,n.v,tl(p,u,r,c)):tl(tl(y,n.k,n.v,p.l),p.k,p.v,tl(p.r,u,r,c))}if(o<=(f+2|0))return{k:u,v:r,h:f>=o?f+1|0:o+1|0,l:n,r:c};let m=c.l,h=c.r;return Gt(h)>=Gt(m)?tl(tl(n,u,r,m),c.k,c.v,h):tl(tl(n,u,r,m.l),m.k,m.v,tl(m.r,c.k,c.v,h))}function oA(n){for(;;){let u=n,r=u.l;if(r===void 0)return u.k;n=r}}function mA(n){if(n!==void 0)return he(oA(n))}function dA(n){for(;;){let u=n,r=u.r;if(r===void 0)return[u.k,u.v];n=r}}function hA(n){if(n!==void 0)return dA(n)}function om(n,u,r){let c=n.l;return c!==void 0?ta(om(c,u,r),n.k,n.v,n.r):(u.contents=n.k,r.contents=n.v,n.r)}function Oo(n,u){if(n===void 0)return;let r=Oo(n.l,u),c=u(n.v),f=Oo(n.r,u);return{k:n.k,v:c,h:n.h,l:r,r:f}}function qy(n,u){for(;;){let r=n;if(r===void 0)return!0;if(!u(r.k,r.v)||!qy(r.l,u))return!1;n=r.r}}function Vy(n,u,r){return n!==void 0?ta(Vy(n.l,u,r),n.k,n.v,n.r):ll(u,r)}function Xy(n,u,r){return n!==void 0?ta(n.l,n.k,n.v,Xy(n.r,u,r)):ll(u,r)}function Nu(n,u,r,c){if(n===void 0)return Vy(c,u,r);if(c===void 0)return Xy(n,u,r);let f=n.k,o=n.v,m=n.h,h=n.l,y=n.r,p=c.k,T=c.v,A=c.h,$=c.l,k=c.r;return m>(A+2|0)?ta(h,f,o,Nu(y,u,r,c)):A>(m+2|0)?ta(Nu(n,u,r,$),p,T,k):tl(n,u,r,c)}function pA(n,u){if(n===void 0)return u;if(u===void 0)return n;let r={contents:u.k},c={contents:u.v},f=om(u,r,c);return Nu(n,r.contents,c.contents,f)}function Xp(n,u,r,c){return r!==void 0?Nu(n,u,be(r),c):pA(n,c)}function Nc(n){let u=n.l,r=n.r,c=u!==void 0?Nc(u):0,f=r!==void 0?Nc(r):0;return(1+c|0)+f|0}function yA(n){return n!==void 0?Nc(n):0}function Ly(n,u,r){for(;;){let c=u,f=n,o=f.l,m=f.k,h=f.r,y=o!==void 0?Ly(o,c,r):c;r[y]=[m,f.v];let p=y+1|0;if(h===void 0)return p;u=p,n=h}}function gA(n){if(n===void 0)return[];let u=Nc(n),r=new Array(u);return Ly(n,0,r),r}function Ro(n,u,r){switch(r){case 0:return;case 1:let c=n[u];return ll(c[0],c[1]);case 2:let f=n[u],m=n[u-1|0],h=f;return{k:m[0],v:m[1],h:2,l:ll(h[0],h[1]),r:void 0};case 3:let y=n[u],p=n[u-1|0],A=n[u-2|0],$=p,k=y;return{k:$[0],v:$[1],h:2,l:ll(k[0],k[1]),r:ll(A[0],A[1])};default:let Q=r/2|0,_=Ro(n,u,Q),O=n[u-Q|0],j=Ro(n,(u-Q|0)-1|0,(r-Q|0)-1|0);return tl(_,O[0],O[1],j)}}function Do(n,u,r){switch(r){case 0:return;case 1:let c=n[u];return ll(c[0],c[1]);case 2:let f=n[u],m=n[u+1|0],h=f;return{k:m[0],v:m[1],h:2,l:ll(h[0],h[1]),r:void 0};case 3:let y=n[u],p=n[u+1|0],A=n[u+2|0],$=p,k=y;return{k:$[0],v:$[1],h:2,l:ll(k[0],k[1]),r:ll(A[0],A[1])};default:let Q=r/2|0,_=Do(n,u,Q),O=n[u+Q|0],j=Do(n,(u+Q|0)+1|0,(r-Q|0)-1|0);return tl(_,O[0],O[1],j)}}function mm(n){let u=n.l;n.l=u.r,u.r=n;let r=Gt(n.l),c=Gt(n.r);n.h=jt(r,c)+1|0;let f=Gt(u.l),o=n.h;return u.h=jt(f,o)+1|0,u}function dm(n){let u=n.r;n.r=u.l,u.l=n;let r=Gt(n.l),c=Gt(n.r);n.h=jt(r,c)+1|0;let f=Gt(u.r),o=n.h;return u.h=jt(f,o)+1|0,u}function bA(n){let u=n.l,r=dm(u);return n.l=r,mm(n)}function vA(n){let u=n.r,r=mm(u);return n.r=r,dm(n)}function fc(n){let u=Gt(n.l),r=Gt(n.r);return n.h=jt(u,r)+1|0,n}function AA(n){let u=n.l,r=n.r,c=Gt(u),f=Gt(r);if(c>(2+f|0)){let o=u.l,m=u.r;return Vp(o,m)?fc(mm(n)):fc(bA(n))}if(f>(2+c|0)){let o=r.l,m=r.r;return Vp(m,o)?fc(dm(n)):fc(vA(n))}return n.h=jt(c,f)+1|0,n}function _A(n,u){for(;;){let r=n;if(r===void 0)return;let c=r.k;if(u===c)return he(r.v);n=u=(u!==void 0?u.h:0)){let y=n.k,p=n.v,T=n.l,A=n.r,$=Lp(y,u);return Xp(Or(T,$[0],r),y,r(y,he(p),$[1]),Or(A,$[2],r))}}else if(u===void 0)return;let c=u.k,f=u.v,o=u.l,m=u.r,h=Lp(c,n);return Xp(Or(h[0],o,r),c,r(c,h[1],he(f)),Or(h[2],m,r))}function Mo(n,u,r){if(n===void 0)return ll(u,r);let c=n.k;if(u===c)return n.k=u,n.v=r,n;let f=n.l,o=n.r;if(uf[0]=0?c=Do(n,0,r):(r=-r|0,c=Ro(n,r-1|0,r));for(let f=r;fu||n===n?1:u===u?-1:0}function Qy(n,u){return n===u?0:n{let A=p[2],$=p[1];if(!(!Object.prototype.hasOwnProperty.call($,T)||ja(p[0][T],$[T])>0))return;let k=A.contents;if(!(k!==void 0&&T>=k)){A.contents=T;return}},o=p=>f([n,u,c],p),m=p=>f([u,n,r],p);Oc(n,o),Oc(u,m);let h=r.contents,y=c.contents;return h!==void 0?y!==void 0?Qy(h,y):-1:y!==void 0?1:0}function De(n,u){if(n===u)return!0;let r=typeof n;if(r==="string"||r==="number"||r==="bigint"||r==="boolean"||r==="undefined"||n===null)return!1;let c=typeof u;if(r==="function"||c==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(c==="number"||c==="bigint"||c==="undefined"||u===null)return!1;let f=n.TAG,o=u.TAG;if(f!==o)return!1;let m=n.length|0,h=u.length|0;if(m===h)if(Array.isArray(n)){let y=0;for(;;){let p=y;if(p===m)return!0;if(!De(n[p],u[p]))return!1;y=p+1|0}}else{if(n instanceof Date&&u instanceof Date)return!(n>u||n{if(!Object.prototype.hasOwnProperty.call(u,A)){y.contents=!1;return}},T=A=>{if(!Object.prototype.hasOwnProperty.call(n,A)||!De(u[A],n[A])){y.contents=!1;return}};return Oc(n,p),y.contents&&Oc(u,T),y.contents}}else return!1}function Yc(n,u){return(typeof n=="number"||typeof n=="bigint")&&(typeof u=="number"||typeof u=="bigint")?n!==u:!De(n,u)}function zr(n,u){let r=new Map;return n.forEach((c,f)=>{r.set(f,u(c))}),r}function jA(n){return"["+n.toString()+"]"}function OA(n,u,r){let c=o=>o.toString(),f=r!==void 0?r:o=>o.toString();return jA(Array.from(n.entries()).map(o=>[c(o[0]),f(o[1])]))}function ym(n,u){let r=u[n];return"$"+(r!==void 0&&u.indexOf(r)===n?r:"\\".concat(String(n)))}function Zy(n,u,r){let c=u.map(f=>ym(f,r)).join(" ");return"?"+n.toString()+"("+c+")"}function RA(n,u,r){let c=(f,o)=>{let m=new Map;return f.forEach((h,y)=>{let p=o.get(y);if(p!==void 0){m.set(y,r(h,be(p)));return}}),m};return n.size{let m=u.get(o);m!==void 0?c.set(o,r(f,be(m))):c.set(o,f)}),u.forEach((f,o)=>{if(c.get(o)===void 0){c.set(o,f);return}}),c}function DA(n,u){return Ky(n,u,(r,c)=>r)}function $A(n,u){return RA(n,u,(r,c)=>[r,c])}let gm=((n,u)=>({...n,key:u}));function MA(n,u){return n.size===n.size?Array.from($A(n,u).values()).filter(r=>De(r[0],r[1])).length===u.size:!1}function wA(n,u){return new Map(Ma(Array.from(n.entries(),r=>{let c=r[0];return tt(u(c,r[1]),f=>[c,f])})))}function zA(n,u,r,c){n.set(u,Ee(tt(n.get(u),r),c))}function CA(n){return new Map(n.entries())}let Jy={filterMap:wA,update:zA,clone:CA};function Fy(n,u){return tt(Ec(n.exec(u)),r=>[r.slice(1),r[0].length])}function $r(n,u){return n.flatMap((r,c)=>c===0?[r]:[u,r])}function Rc(n,u,r){return n.toSpliced(u,1,r)}let Cr=Rt("Util.Unreachable");function Kp(n,u){let r=n.findIndex(u);if(r!==-1)return r;throw{RE_EXN_ID:Cr,_1:"Element not found",Error:new Error}}function kA(n){if(n.TAG==="Ok")return he(n._0)}function BA(n,u){return n.TAG==="Ok"?n:u()}let Wy={getExn:Kl,mapOr:wy,mapWithDefault:Qv,map:Rl,flatMap:xc,getOr:im,getWithDefault:Zv,isOk:An,isError:zy,equal:Xv,compare:Lv,forEach:Yv,mapError:Xc,ok:kA,or:BA};function UA(n,u){return n!==void 0?be(n):u()}function HA(n){let u=Ma(n);if(n.length===u.length)return u}let St={filter:kv,forEach:My,getExn:Qe,mapOr:um,mapWithDefault:qv,map:tt,flatMap:Vc,getOr:Ee,getWithDefault:Vv,orElse:wr,isSome:rm,isNone:Bv,equal:Uv,compare:Hv,getOrElse:UA,sequence:HA},qA=((n,u=0)=>{let r=3735928559^u,c=1103547991^u;for(let f=0,o;f>>16,2246822507),r^=Math.imul(c^c>>>13,3266489909),c=Math.imul(c^c>>>16,2246822507),c^=Math.imul(r^r>>>13,3266489909),4294967296*(2097151&c)+(r>>>0)}),VA={cyrb53:qA},Mt=` -`,XA="([a-zA-Z][a-zA-Z\\d]*)";function Dl(n,u){let r=parseInt(n);if(!(isNaN(r)||r>2147483647||r<-2147483648))return r|0}function LA(n,u){let r=n.lastIndexOf(u);if(r!==-1)return r}function YA(n){let u=n.expects,r=u.length,c;if(r!==1)if(r!==0){let o=n.expects.length;c="expected "+n.expects.slice(0,o-1|0).join(", ")+", or "+n.expects[o-1|0]}else c=void 0;else c="expected "+u[0];let f=n.msg;return f!==void 0?c!==void 0?"parse failed: "+f+` - `+c:"parse failed: "+f:c!==void 0?"parse failed: "+c:"parse failed"}let QA={pos:{line:1,col:1,idx:0}};function bm(n,u){return Xc(Rl(n(u,QA),r=>[r[0],u.slice(r[1].pos.idx)]),r=>"around "+u.slice(r.pos.idx,r.pos.idx+5|0)+`: -`+YA(r.info))}function mt(n,u){return(r,c)=>Rl(n(r,c),f=>[u(f[0]),f[1]])}function ZA(n,u){return(r,c)=>Xc(n(r,c),u)}function Pn(n,u){return ZA(n,r=>{let c={...r.info};return{info:(c.expects=[u],c),pos:r.pos}})}function pt(n,u){return(r,c)=>xc(n(r,c),f=>u(f[0])(r,f[1]))}function Iy(n,u){return pt(n,r=>u)}function Py(n,u){return pt(n,r=>mt(u,c=>r))}function KA(n){return(u,r)=>({TAG:"Error",_0:{info:{msg:n,expects:[]},pos:r.pos}})}function vm(n,u){return(r,c)=>({TAG:"Error",_0:{info:{msg:u,expects:n},pos:c.pos}})}function Am(n,u){return(r,c)=>{let f=n(r,c);if(f.TAG==="Ok")return{TAG:"Ok",_0:f._0};let o=f._0;return Xc(u(r,c),m=>({info:{expects:o.info.expects.concat(m.info.expects)},pos:m.pos}))}}function JA(n){return Am(mt(n,u=>he(u)),(u,r)=>({TAG:"Ok",_0:[void 0,r]}))}function e1(n){return ke(n,(u,r)=>({TAG:"Error",_0:{info:{msg:"no matches",expects:[]},pos:r.pos}}),Am)}function FA(n,u){return{TAG:"Ok",_0:[u,u]}}function WA(n){return pt(FA,u=>{let r=n(u);return(c,f)=>({TAG:"Ok",_0:[void 0,r]})})}function Qc(n,u){return{TAG:"Ok",_0:[n.slice(u.pos.idx),u]}}function t1(n){let u={contents:(r,c)=>({TAG:"Error",_0:{info:{msg:"umm",expects:[]},pos:c.pos}})};return u.contents=n((r,c)=>u.contents(r,c)),u.contents}function _m(n){return mt(t1(u=>pt(JA(n),r=>{if(r===void 0)return(f,o)=>({TAG:"Ok",_0:[0,o]});let c=be(r);return mt(u,f=>Dv(f,c))})),wv)}function Zc(n,u,r){return Py(pt(u,c=>n),r)}function Sm(n){return pt(Qc,u=>{if(u.length({TAG:"Error",_0:{info:{msg:"tried to consume too much",expects:[]},pos:y.pos}});let r=u.slice(0,n),c=r.split(` -`).length-1|0,f=r.length-Ee(LA(r,` -`),0)|0,o=(h,y)=>({TAG:"Ok",_0:[r,y]}),m=WA(h=>({pos:{line:h.pos.line+c|0,col:c>0?f:h.pos.col+f|0,idx:h.pos.idx+n|0}}));return pt(m,h=>o)})}function IA(n,u){return tt(Ec(n.exec(u)),r=>[r.slice(1),r[0].length])}function Mr(n){return pt(Qc,u=>{if(!u.startsWith(n))return vm(['"'+n+'"'],void 0);let r=(f,o)=>({TAG:"Ok",_0:[n,o]}),c=Sm(n.length);return pt(c,f=>r)})}function Tm(n){let u=n.source,r=u.startsWith("^")?n:new RegExp("^"+u,n.flags);return pt(Qc,c=>{let f=IA(r,c);if(f===void 0)return vm(["regex pattern "+n.source],void 0);let o=f[0],m=(y,p)=>({TAG:"Ok",_0:[o,p]}),h=Sm(f[1]);return pt(h,y=>m)})}function l1(n){return pt(Tm(n),u=>{if(u.length!==1)return(c,f)=>({TAG:"Error",_0:{info:{msg:"more than one match",expects:[]},pos:f.pos}});let r=u[0];return(c,f)=>({TAG:"Ok",_0:[r,f]})})}function Da(n){let u=Tm(/^\s*/);return Py(n,mt(u,r=>{}))}function Oa(n){return Da(Mr(n))}let Em=mt(l1(/(\d+)/),n=>Qe(Dl(n),void 0)),PA=Tm(/\s*/),e_=mt(PA,n=>{});function t_(n){return pt(Qc,u=>{let r=n(u);if(r.TAG!=="Ok")return KA(r._0);let c=r._0,f=c[0],o=u.length-c[1].length|0;return mt(Sm(o),m=>f)})}function n1(n,u,r){return t_(c=>n(c,u,r))}let l_=Mr("\\"),a1=Da(pt(l_,n=>Em)),u1=Da(l1(/([^\s\(\)]+)/));function r1(n){return Am(a1,pt(u1,u=>{let r=Oy(n,u);return r!==void 0?(c,f)=>({TAG:"Ok",_0:[r,f]}):vm(["in-scope variable"],void 0)}))}function n_(n){let u=Mr("?");return pt(pt(u,r=>Em),r=>mt(Zc(_m(r1(n)),Da(Mr("(")),Da(Mr(")"))),c=>[r,c]))}let Dc={varLit:a1,ident:u1,varIdx:r1,schemaLit:n_};function Kc(n){let u=Rt("AtomBase.Make(T).Tag");return{Tag:u,wrap:c=>({TAG:"AnyValue",_0:{RE_EXN_ID:u},_1:c})}}let i1=Rt("AtomBase.Make(T).Tag");function a_(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:i1},_1:n}}let Lr={Tag:i1,wrap:a_},c1=Rt("AtomBase.Make(T).Tag");function u_(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:c1},_1:n}}let $c={Tag:c1,wrap:u_};function _t(n,u,r){let c=n!==void 0?n.h:0,f=r!==void 0?r.h:0;return{v:u,h:(c>=f?c:f)+1|0,l:n,r}}function Nt(n){return{v:n,h:1,l:void 0,r:void 0}}function Mc(n,u){return u!==void 0?n!==void 0?n.h>=u.h:!1:!0}function Vt(n,u,r){let c=n!==void 0?n.h:0,f=r!==void 0?r.h:0;if(c>(f+2|0)){let h=n.l,y=n.r;return Mc(h,y)?_t(h,n.v,_t(y,u,r)):_t(_t(h,n.v,y.l),y.v,_t(y.r,u,r))}if(f<=(c+2|0))return{v:u,h:(c>=f?c:f)+1|0,l:n,r};let o=r.l,m=r.r;return Mc(m,o)?_t(_t(n,u,o),r.v,m):_t(_t(n,u,o.l),o.v,_t(o.r,r.v,m))}function s1(n,u){let r=n.l;return r!==void 0?Vt(s1(r,u),n.v,n.r):(u.contents=n.v,n.r)}function f1(n,u){return n!==void 0?Vt(f1(n.l,u),n.v,n.r):Nt(u)}function o1(n,u){return n!==void 0?Vt(n.l,n.v,o1(n.r,u)):Nt(u)}function Jl(n,u,r){if(n===void 0)return f1(r,u);if(r===void 0)return o1(n,u);let c=n.h,f=r.h;return c>(f+2|0)?Vt(n.l,n.v,Jl(n.r,u,r)):f>(c+2|0)?Vt(Jl(n,u,r.l),r.v,r.r):_t(n,u,r)}function zo(n){let u=n.l,r=n.r,c=u!==void 0?zo(u):0,f=r!==void 0?zo(r):0;return(1+c|0)+f|0}function m1(n,u,r){for(;;){let c=u,f=n,o=f.v,m=f.l,h=f.r,y=m!==void 0?m1(m,c,r):c;r[y]=o;let p=y+1|0;if(h===void 0)return p;u=p,n=h}}function r_(n){if(n===void 0)return[];let u=zo(n),r=new Array(u);return m1(n,0,r),r}function kr(n,u,r){switch(r){case 0:return;case 1:return Nt(n[u]);case 2:let c=n[u];return{v:n[u-1|0],h:2,l:Nt(c),r:void 0};case 3:let o=n[u],m=n[u-1|0],h=n[u-2|0];return{v:m,h:2,l:Nt(o),r:Nt(h)};default:let y=r/2|0,p=kr(n,u,y),T=n[u-y|0],A=kr(n,(u-y|0)-1|0,(r-y|0)-1|0);return _t(p,T,A)}}function Br(n,u,r){switch(r){case 0:return;case 1:return Nt(n[u]);case 2:let c=n[u];return{v:n[u+1|0],h:2,l:Nt(c),r:void 0};case 3:let o=n[u],m=n[u+1|0],h=n[u+2|0];return{v:m,h:2,l:Nt(o),r:Nt(h)};default:let y=r/2|0,p=Br(n,u,y),T=n[u+y|0],A=Br(n,(u+y|0)+1|0,(r-y|0)-1|0);return _t(p,T,A)}}function i_(n,u,r){for(;;){let c=n;if(c===void 0)return!1;let f=c.v,o=r(u,f);if(o===0)return!0;n=o<0?c.l:c.r}}function dc(n,u,r){for(;;){let c=u,f=n;if(f===void 0)return!0;if(c===void 0)return!1;let o=f.v,m=f.l,h=f.r,y=c.v,p=c.l,T=c.r,A=r(o,y);if(A===0){if(!dc(m,p,r))return!1;u=T,n=h;continue}if(A<0){if(!dc(_t(m,o,void 0),p,r))return!1;n=h;continue}if(!dc(_t(void 0,o,h),T,r))return!1;n=m}}function xm(n){let u=n.l;n.l=u.r,u.r=n;let r=n.l,c=r!==void 0?r.h:0,f=n.r,o=f!==void 0?f.h:0;n.h=jt(c,o)+1|0;let m=u.l,h=m!==void 0?m.h:0,y=n.h;return u.h=jt(h,y)+1|0,u}function Gm(n){let u=n.r;n.r=u.l,u.l=n;let r=n.l,c=r!==void 0?r.h:0,f=n.r,o=f!==void 0?f.h:0;n.h=jt(c,o)+1|0;let m=u.r,h=m!==void 0?m.h:0,y=n.h;return u.h=jt(h,y)+1|0,u}function c_(n){let u=n.l,r=Gm(u);return n.l=r,xm(n)}function s_(n){let u=n.r,r=xm(u);return n.r=r,Gm(n)}function oc(n){let u=n.l,r=u!==void 0?u.h:0,c=n.r,f=c!==void 0?c.h:0;return n.h=jt(r,f)+1|0,n}function Nm(n){let u=n.l,r=n.r,c=u!==void 0?u.h:0,f=r!==void 0?r.h:0;if(c>(2+f|0)){let o=u.l,m=u.r;return Mc(o,m)?oc(xm(n)):oc(c_(n))}if(f>(2+c|0)){let o=r.l,m=r.r;return Mc(m,o)?oc(Gm(n)):oc(s_(n))}return n.h=jt(c,f)+1|0,n}function Co(n,u,r){if(u===void 0)return Nt(r);let c=u.v,f=n(r,c);if(f===0)return u;let o=u.l,m=u.r;if(f<0){let h=Co(n,o,r);u.l=h}else u.r=Co(n,m,r);return Nm(u)}function f_(n,u){let r=n.length;if(r===0)return;let c=Hy(n,(o,m)=>u(o,m)<0),f;c>=0?f=Br(n,0,c):(c=-c|0,f=kr(n,c-1|0,c));for(let o=c;o=f){if(f===1)return Ur(n,u.v,r);let p=n.v,T=n.l,A=n.r,$=wc(r,u,p);return Jl(Rr(T,$[0],r),p,Rr(A,$[1],r))}if(c===1)return Ur(u,n.v,r);let o=u.v,m=u.l,h=u.r,y=wc(r,n,o);return Jl(Rr(y[0],m,r),o,Rr(y[1],h,r))}let o_=f_,m_=i_,d_=dc;function ko(n,u){let r=u.cmp;return{cmp:r,data:o_(n,r)}}function zc(n,u){let r=n.data,c=n.cmp,f=Ur(r,u,c);return f===r?n:{cmp:c,data:f}}function Bo(n,u){let r=n.cmp;return{cmp:r,data:Rr(n.data,u.data,r)}}function Uo(n,u){let r=n.cmp;return d_(n.data,u.data,r)}function Ql(n){return{cmp:n.cmp,data:void 0}}function Cc(n,u){return m_(n.data,u,n.cmp)}function Au(n,u){let r=!1;for(;!r;){let c=n.next();u(c.value),r=c.done}}let Hr=Rt("SExp.SubstNotCompatible"),h_=ja,Fn={cmp:h_};function p_(n){let u=(w,V)=>{},r=()=>new Map,c=De,f=w=>{switch(w.TAG){case"Atom":return{TAG:"Atom",_0:n.reduce(w._0)};case"Compound":return{TAG:"Compound",subexps:w.subexps.map(f)};case"Var":case"Schematic":return w}},o=w=>{switch(w.TAG){case"Compound":return ke(w.subexps,Ql(Fn),(V,q)=>Bo(V,o(q)));case"Atom":case"Var":return Ql(Fn);case"Schematic":return zc(Ql(Fn),w.schematic)}},m=w=>{switch(w.TAG){case"Compound":return ke(w.subexps,Ql(Fn),(V,q)=>Bo(V,m(q)));case"Var":return zc(Ql(Fn),w.idx);case"Atom":case"Schematic":return Ql(Fn)}},h=(w,V)=>{switch(w.TAG){case"Atom":let q=new Map(Et(Array.from(V.entries()),z=>{let Z=z[1];if(Z.TAG==="Atom")return[z[0],Z._0]}));return{TAG:"Atom",_0:n.substitute(w._0,q)};case"Compound":return{TAG:"Compound",subexps:w.subexps.map(z=>h(z,V))};case"Var":return w;case"Schematic":let x=V.get(w.schematic);return x!==void 0?x:w}},y=(w,V)=>{let q=new Map;return Au(w.entries(),x=>{if(x!==void 0){q.set(x[0],h(x[1],V));return}}),Au(V.entries(),x=>{if(x!==void 0){q.set(x[0],h(x[1],w));return}}),q},p=new Map,T=(w,V)=>{let q=new Map;return q.set(w,V),q},A=(w,V)=>{switch(w.TAG){case"Atom":switch(V.TAG){case"Atom":return Xr(n.unify(w._0,V._0,void 0),ae=>zr(ae,ue=>({TAG:"Atom",_0:ue})));case"Compound":case"Var":return Tt}break;case"Compound":let x=w.subexps;switch(V.TAG){case"Compound":let ae=V.subexps;return x.length===ae.length?$(Lc(x,ae)):Tt;case"Atom":case"Var":return Tt}break;case"Var":switch(V.TAG){case"Atom":case"Compound":return Tt;case"Var":return w.idx===V.idx?bn(p):Tt}break;case"Schematic":let z=w.schematic,Z=0;if(V.TAG==="Schematic"){if(z===V.schematic)return bn(p);Z=2}else Z=2;if(Z===2&&!Cc(o(V),z)&&Uo(m(V),ko(w.allowed,Fn)))return bn(T(z,V));break}if(V.TAG!=="Schematic")return Tt;let q=V.schematic;return!Cc(o(w),q)&&Uo(m(w),ko(V.allowed,Fn))?bn(T(q,w)):Tt},$=w=>{if(w.length===0)return bn(p);let V=w[0];return Cy(A(V[0],V[1]),q=>Iv($(Et(w.slice(1),x=>{try{return[h(x[0],q),h(x[1],q)]}catch(z){let Z=la(z);if(Z.RE_EXN_ID===Hr)return;throw Z}})),x=>{try{return y(q,x)}catch(z){let Z=la(z);if(Z.RE_EXN_ID===Hr)return;throw Z}}))},k=(w,V,q)=>A(w,V),Q=w=>{for(;;){let V=w;switch(V.TAG){case"Atom":return he(V._0);case"Compound":let q=V.subexps;if(q.length!==1)return;w=q[0];continue;case"Var":return n.coerce($c.wrap({TAG:"Var",idx:V.idx}));case"Schematic":return n.coerce($c.wrap({TAG:"Schematic",schematic:V.schematic,allowed:V.allowed}))}}},_=(w,V,q)=>{let x=q!==void 0?q:0;switch(w.TAG){case"Atom":return{TAG:"Atom",_0:n.substDeBruijn(w._0,V.map(Q),x)};case"Compound":return{TAG:"Compound",subexps:w.subexps.map(Z=>_(Z,V,x))};case"Var":let z=w.idx;return z=0?V[z-x|0]:{TAG:"Var",idx:z-V.length|0};case"Schematic":return{TAG:"Schematic",schematic:w.schematic,allowed:Et(w.allowed,Z=>{if(!(Z<(x+V.length|0)))return Z-(x+V.length|0)|0})}}},O=(w,V,q)=>{let x=q!==void 0?q:0;switch(w.TAG){case"Atom":return{TAG:"Atom",_0:n.upshift(w._0,V,x)};case"Compound":return{TAG:"Compound",subexps:w.subexps.map(Z=>O(Z,V,x))};case"Var":let z=w.idx;return{TAG:"Var",idx:z>=x?z+V|0:z};case"Schematic":return{TAG:"Schematic",schematic:w.schematic,allowed:w.allowed.map(Z=>Z>=x?Z+V|0:Z)}}},j=(w,V)=>({TAG:"Schematic",schematic:w,allowed:Na(V.length,q=>q)}),S=(w,V)=>{if(V>=w.contents){w.contents=V+1|0;return}},R=(w,V)=>{let q=w.contents;return w.contents=w.contents+1|0,q},D=(w,V)=>{let q=V[w];return q!==void 0&&V.indexOf(q)===w?q:"\\".concat(String(w))},C=()=>({contents:0}),F=(w,V,q)=>{switch(w.TAG){case"Atom":return n.prettyPrint(w._0,q);case"Compound":return"(".concat(w.subexps.map(x=>F(x,V,q)).join(" ")).concat(")");case"Var":return D(w.idx,q);case"Schematic":return"?".concat(String(w.schematic)).concat("(").concat(w.allowed.map(x=>D(x,q)).join(" ")).concat(")")}},B=w=>w.concat("."),E=w=>{let V=new RegExp("^([^\\s.\\[\\]()]+)\\.","y"),q=V.exec(w.trim());if(q==null)return{TAG:"Error",_0:"not a meta name"};let x=q.slice(1);return x.length!==1?{TAG:"Error",_0:"impossible happened"}:{TAG:"Ok",_0:[x[0],w.trim().slice(V.lastIndex)]}},b=(w,V)=>{let q=Dc.varIdx(w),x=mt(q,ae=>({TAG:"Var",idx:ae})),z=mt(Dc.schemaLit(w),ae=>{let ue=ae[1];return tt(V,G=>{ue.forEach(Y=>S(G,Y))}),{TAG:"Schematic",schematic:ae[0],allowed:ue}}),Z=t1(ae=>Da(e1([Pn(z,"schematic"),Pn(x,"variable"),Pn(mt(n1(n.parse,w,V),ue=>({TAG:"Atom",_0:ue})),"atom"),mt(Zc(_m(ae),Pn(Oa("("),"open expression"),Pn(Oa(")"),"close expression")),ue=>({TAG:"Compound",subexps:ue}))])));return Iy(e_,Z)},N=(w,V,q,x)=>bm(b(q,x),w),H=w=>{switch(w.TAG){case"Atom":return n.concrete(w._0);case"Compound":return w.subexps.some(H);case"Var":case"Schematic":return!1}};return{mapSubst:zr,mergeSubsts:DA,substEqual:MA,substitute:h,unify:k,makeSubst:r,equivalent:c,substDeBruijn:_,reduce:f,upshift:O,fresh:R,seen:S,place:j,makeGen:C,emptyGrammar:void 0,combineGrammars:u,parse:N,prettyPrint:F,parseMeta:E,prettyPrintMeta:B,concrete:H,mapTerms:(w,V)=>V(w)}}let y_=/^\s*/,g_=/^[^\s.()\[\]][^\s.()\[\]]*/;function vu(n,u){return n.charAt(u)}function Yl(n,u){return n.slice(u)}function qt(n){let u=y_.exec(n);if(u==null)return n;let r=u[0];if(r===void 0)return n;let c=be(r);return c!==void 0?n.slice(c.length):n}function vn(n){let u=qt(n),r=g_.exec(u);if(r==null)return;let c=r[0];if(c===void 0)return;let f=be(c);if(f!==void 0)return[f,u.slice(f.length)]}function b_(n){if(n!==void 0)return be(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function v_(n){return n!==void 0}let A_=b_;function __(n,u,r,c){for(;;){let f=r,o=u;if(f>=c)return f;let m=n[f];if(o<=m)return f;r=f+1|0,u=m}}function S_(n){let u=n.length;if(u===0||u===1)return u;let r=n[0],c=n[1];if(r=u)return m;let y=n[m];if(h>=y)return m;o=m+1|0,f=y}}else return r>c?-__(n,c,2,u)|0:1}function T_(n,u){for(;;){let r=n;if(r===void 0)return!1;let c=r.v;if(u===c)return!0;n=u=0?c=Br(n,0,r):(r=-r|0,c=kr(n,r-1|0,r));for(let f=r;fn.parseLeaf($,A.reserved,k,Q,(_,O,j)=>p(A,_,O,j)),r=(A,$,k,Q)=>{let _=u(A,$,k,Q);if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let O=_._0;return c(A,O[0],O[1],k,Q)},c=(A,$,k,Q,_)=>{for(;;){let O=k,j=$,S=u(A,O,Q,_);if(S.TAG!=="Ok")return{TAG:"Ok",_0:[j,O]};let R=S._0;k=R[1],$=n.mkApp(j,R[0])}},f=(A,$,k,Q,_)=>{let O=o(A,$,k,Q,_);if(O.TAG!=="Ok")return{TAG:"Error",_0:O._0};let j=O._0;return m(A,$,j[0],j[1],Q,_)},o=(A,$,k,Q,_)=>{let O=A.ops.filter(D=>D.category===$?Ee(tt(D.parts[0],C=>C.TAG==="Lit"),!1):!1),j=h(A,O,void 0,k,Q,_);if(j!==void 0)return j;let S=A.immediateTighter[$];if(S===void 0)return r(A,k,Q,_);let R=0;for(;;){let D=R,C=Su(S,D);if(C===void 0)return{TAG:"Error",_0:"expected a term (category "+$+")"};let F=f(A,C,k,Q,_);if(F.TAG==="Ok")return F;R=D+1|0}},m=(A,$,k,Q,_,O)=>{for(;;){let j=Q,S=k,R=A.ops.filter(b=>b.category===$?Ee(tt(b.parts[0],N=>N.TAG!=="Lit"),!1):!1),D=h(A,R,he(S),j,_,O);if(D===void 0)return{TAG:"Ok",_0:[S,j]};if(D.TAG!=="Ok")return D;let C=D._0,F=C[1],B=C[0];if(R.some(b=>b.assoc==="NonAssoc"))return{TAG:"Ok",_0:[B,F]};Q=F,k=B}},h=(A,$,k,Q,_,O)=>{let j=rm(k)?1:0,S=Ee(tt(k,D=>[D]),[]),R=0;for(;;){let D=R,C=Su($,D);if(C===void 0)return;let F=y(A,C,j,j,Q,S,_,O);if(F!==void 0){if(F.TAG!=="Ok")return F;let B=F._0,E=n.mkOpHead(C.name);return{TAG:"Ok",_0:[ke(B[0],E,(b,N)=>n.mkApp(b,N)),B[1]]}}R=D+1|0}},y=(A,$,k,Q,_,O,j,S)=>{for(;;){let R=O,D=_,C=k,F=Su($.parts,C);if(F===void 0)return{TAG:"Ok",_0:[R,D]};if(F.TAG==="Lit"){let N=F._0,H=qt(D),L=vn(H);if(L!==void 0&&L[0]===N){_=L[1],k=C+1|0;continue}return C===Q?void 0:{TAG:"Error",_0:'expected "'+N+'"'}}let B=C===($.parts.length-1|0),E=F._0==="Self"&&B&&$.assoc==="Right"?f(A,$.category,D,j,S):o(A,$.category,D,j,S);if(E.TAG!=="Ok")return{TAG:"Error",_0:E._0};let b=E._0;O=R.concat([b[0]]),_=b[1],k=C+1|0}},p=(A,$,k,Q)=>{let _=Et(A.roots,j=>{let S=f(A,j,$,k,Q);if(S.TAG==="Ok")return[S,S._0[1].length]}),O=r(A,$,k,Q);return _.length!==0?ke(_,Cl(_,0),(j,S)=>{let R=S[1],D=j[1];return Ru($,A,k,Q)}}function O_(n,u,r,c){for(;;){let f=r,o=u;if(f>=c)return f;let m=n[f];if(o<=m)return f;r=f+1|0,u=m}}function R_(n){let u=n.length;if(u===0||u===1)return u;let r=n[0],c=n[1];if(r=u)return m;let y=n[m];if(h>=y)return m;o=m+1|0,f=y}}else return r>c?-O_(n,c,2,u)|0:1}function D_(n,u){for(;;){let r=n;if(r===void 0)return!1;let c=r.v;if(u===c)return!0;n=u=0?c=Br(n,0,r):(r=-r|0,c=kr(n,r-1|0,r));for(let f=r;f=c){if(c===1)return $a(n,u.v);let y=n.v,p=n.l,T=n.r,A=Bc(u,y);return Jl(Ga(p,A[0]),y,Ga(T,A[1]))}if(r===1)return $a(u,n.v);let f=u.v,o=u.l,m=u.r,h=Bc(n,f);return Jl(Ga(h[0],o),f,Ga(h[1],m))}let Ra=$_,kl=D_,M_=r_,w_=[],z_=[],C_=[],k_={categories:w_,tighterThan:z_,ops:C_};function B_(n,u){return{categories:n.categories.concat(u.categories),tighterThan:n.tighterThan.concat(u.tighterThan),ops:n.ops.concat(u.ops)}}function d1(n,u,r){let c=r!==void 0?r:"NonAssoc",f=u.split("_"),o=[];f.forEach((h,y)=>{if(y>0&&o.push({TAG:"Hole",_0:"Tighter"}),h!==""){o.push({TAG:"Lit",_0:h});return}});let m;switch(c){case"Right":let h=o.length;m=o.map((y,p)=>p===(h-1|0)?{TAG:"Hole",_0:"Self"}:y);break;case"Left":case"NonAssoc":m=o;break}return{categories:[n],tighterThan:[],ops:[{category:n,parts:m,assoc:c,name:u}]}}function U_(n,u){return{categories:[n,u],tighterThan:[[n,u]],ops:[]}}function h1(n){let u={};n.tighterThan.forEach(p=>{let T=p[1],A=Ee(u[T],[]);u[T]=A.concat([p[0]])});let r=(p,T,A)=>{if(kl(T,p))return!0;if(kl(A,p))return!1;let $=$a(T,p);return Ee(u[p],[]).some(k=>r(k,$,A))},c=ke(n.categories,[],(p,T)=>p.includes(T)?p:p.concat([T]));if(c.some(p=>r(p,void 0,void 0)))return{TAG:"Error",_0:"tighterThan relation contains a cycle"};let o=Ra(n.tighterThan.map(p=>p[0])),m=c.filter(p=>!kl(o,p)),h=Ra(n.ops.flatMap(p=>Et(p.parts,T=>{if(T.TAG==="Lit")return T._0}))),y={};return n.ops.forEach(p=>{y[p.name]=p}),{TAG:"Ok",_0:{ops:n.ops,byName:y,immediateTighter:u,reserved:h,roots:m}}}function H_(n,u){let r=Ra(n.ops.map($=>$.name)),c=u.ops.filter($=>!kl(r,$.name)),f=n.ops.concat(c),o=Object.assign({},n.byName);Object.entries(u.byName).forEach($=>{o[$[0]]=$[1]});let m=Ga(n.reserved,u.reserved),h=Object.assign({},n.immediateTighter),y=($,k)=>{let Q=[$],_;for(;;){let O=_,j=Q;if(j.some(R=>R===k))return!0;let S=j.flatMap(R=>Ee(h[R],[])).filter(R=>!kl(O,R));if(S.length===0)return!1;_=ke(S,O,$a),Q=S}};Object.entries(u.immediateTighter).forEach($=>{let k=$[0];$[1].forEach(Q=>{if(y(k,Q))return;let _=Ee(h[k],[]);h[k]=_.concat([Q])})});let p=Ra(Object.entries(h).flatMap($=>$[1])),A=ke(f.map($=>$.category).concat(Object.entries(h).flatMap($=>[$[0]].concat($[1]))),[],($,k)=>$.includes(k)?$:$.concat([k])).filter($=>!kl(p,$));return{ops:f,byName:o,immediateTighter:h,reserved:m,roots:A}}let q_=[],V_={},X_={},L_=[],Y_={ops:q_,byName:V_,immediateTighter:X_,reserved:void 0,roots:L_},Q_=/^(infixl|infixr|infix|mixfix)\b/,Z_=/^[^\s.()\[\]][^\s.()\[\]]*/;function K_(n){let u=qt(n),r=Z_.exec(u);if(r==null)return;let c=r[0];if(c===void 0)return;let f=be(c);if(f!==void 0)return[f,Yl(u,f.length)]}function Jp(n,u){let r=qt(n),c=vn(r);if(c!==void 0&&c[0]===u)return c[1]}function J_(n){let u=qt(n),r=Q_.exec(u);if(r==null){let A=Jp(u,"tighter");if(A===void 0)return{TAG:"Error",_0:"expected a declaration (infixl/infixr/infix/mixfix/tighter) at: "+u};let $=vn(qt(A));if($===void 0)return{TAG:"Error",_0:'expected a category name after "tighter"'};let k=$[0],Q=Jp($[1],"than");if(Q===void 0)return{TAG:"Error",_0:'expected "than" after "tighter '+k+'"'};let _=vn(qt(Q));return _!==void 0?{TAG:"Ok",_0:[U_(k,_[0]),_[1]]}:{TAG:"Error",_0:'expected a category name after "than"'}}let c=r[0];if(c===void 0)return{TAG:"Error",_0:"malformed declaration keyword"};let f=be(c);if(f===void 0)return{TAG:"Error",_0:"malformed declaration keyword"};let o;switch(f){case"infixl":o="Left";break;case"infixr":o="Right";break;default:o="NonAssoc"}let m=Yl(u,f.length),h=vn(qt(m));if(h===void 0)return{TAG:"Error",_0:'expected a category name after "'+f+'"'};let y=h[0],p=K_(h[1]);if(p===void 0)return{TAG:"Error",_0:'expected an operator name after category "'+y+'"'};let T=p[0];return T.includes("_")?{TAG:"Ok",_0:[d1(y,T,o),p[1]]}:{TAG:"Error",_0:'operator name "'+T+'" must contain at least one "_" hole'}}function F_(n){let u=n,r=k_;for(;;){let c=r,o=qt(u),m=J_(o);if(m.TAG!=="Ok")return{TAG:"Ok",_0:[c,o]};let h=m._0;r=B_(c,h[0]),u=h[1]}}function W_(n){switch(n.assoc){case"Left":return"infixl";case"Right":return"infixr";case"NonAssoc":let r=n.parts[0],c=n.parts[n.parts.length-1|0];return r!==void 0&&r.TAG!=="Lit"&&c!==void 0&&c.TAG!=="Lit"?"infix":"mixfix"}}function I_(n){return W_(n)+" "+n.category+" "+n.name}function P_(n){return"tighter "+n[0]+" than "+n[1]}function p1(n){return n.ops.map(I_).concat(n.tighterThan.map(P_)).join(` -`)}function Fp(n){return ke(n.parts,0,(u,r)=>r.TAG==="Lit"?u:u+1|0)}function eS(n,u,r){switch(n){case"Left":return u===0?"Self":"Tighter";case"Right":return u===(r-1|0)?"Self":"Tighter";case"NonAssoc":return"Tighter"}}function tS(n,u,r){let c=Ee(n.immediateTighter[r],[]),f;for(;;){let o=f,m=c;if(m.some(p=>p===u))return!0;let y=m.flatMap(p=>Ee(n.immediateTighter[p],[])).filter(p=>!kl(o,p));if(y.length===0)return!1;f=ke(y,o,$a),c=y}}function Ao(n,u,r){if(typeof r!="object")switch(r){case"Top":return!1;case"AppFunc":return typeof u=="object";case"AppArg":if(typeof u=="object")return!0;switch(u){case"ALambda":case"AnAtom":return!1;case"AnApp":return!0}}else{let c=r._0;if(typeof u!="object")return!1;let f=u._0;return f===c?r._1!=="Self":!tS(n,f,c)}}function y1(n){return u=>{let r=(m,h,y,p,T)=>{let A=u.printLeaf(h,y,p,T,m.reserved,(j,S,R,D)=>r(m,j,S,R,D));if(A!==void 0)return be(A);let $=u.tryStrip(h);if($===void 0)return n.leaf("unprintable","?");let k=$[1],Q=$[0],_=u.tryOpHead(Q);if(_===void 0)return c(m,Q,k,y,p,T);let O=m.byName[_];return O!==void 0&&k.length>=Fp(O)?f(m,O,k,y,p,T):c(m,Q,k,y,p,T)},c=(m,h,y,p,T,A)=>{let $=r(m,h,p,T,"AppFunc"),k=n.spaced([$].concat(y.map(Q=>r(m,Q,p,T,"AppArg"))));return Ao(m,"AnApp",A)?n.parens(k):k},f=(m,h,y,p,T,A)=>{let $=Fp(h),k=y.slice(0,$),Q=y.slice($),_={contents:0},O=h.parts.map(C=>{if(C.TAG==="Lit")return n.leaf("op-lit",C._0);let F=_.contents;_.contents=F+1|0;let B=eS(h.assoc,F,$);return r(m,Cl(k,F),p,T,{TAG:"InCategory",_0:h.category,_1:B})}),j=n.spaced(O),S=Q.length>0?"AppFunc":A,R=Ao(m,{_0:h.category},S)?n.parens(j):j;if(Q.length===0)return R;let D=n.spaced([R].concat(Q.map(C=>r(m,C,p,T,"AppArg"))));return Ao(m,"AnApp",A)?n.parens(D):D};return{prettyPrintAt:r,printPlainApp:c,printOpApplication:f,prettyPrintWithGrammar:(m,h,y,p)=>r(y,m,0,p,h?"AppArg":"Top")}}}function lS(n,u){return u}function nS(n){return n.join("")}function aS(n){return n.join(" ")}function uS(n){return"("+n+")"}let Pt={leaf:lS,seq:nS,spaced:aS,parens:uS};function rS(){return{next:0}}function g1(n,u){let r=n.next;return n.next=n.next+1|0,r}function b1(n,u){if(u>=n.next){n.next=u+1|0;return}}function iS(n,u){return Uy(u,{TAG:"Schematic",schematic:n},(r,c,f)=>({TAG:"App",func:r,arg:{TAG:"Var",idx:f}}))}function $e(n,u,r){let c=r!==void 0?r:0;switch(n.TAG){case"Var":let f=n.idx;return f>=c?{TAG:"Var",idx:f+u|0}:n;case"Symbol":case"Schematic":return n;case"Lam":return{TAG:"Lam",name:n.name,body:$e(n.body,u,c+1|0)};case"App":return{TAG:"App",func:$e(n.func,u,c),arg:$e(n.arg,u,c)}}}function Xe(n,u,r){let c=r!==void 0?r:0,f=u.length,o=(m,h)=>{switch(m.TAG){case"Var":let y=m.idx;return y<(c+h|0)?m:y<((c+h|0)+f|0)?$e(Cl(u,(y-c|0)-h|0),h,0):{TAG:"Var",idx:y-f|0};case"Symbol":case"Schematic":return m;case"Lam":return{TAG:"Lam",name:m.name,body:o(m.body,h+1|0)};case"App":return{TAG:"App",func:o(m.func,h),arg:o(m.arg,h)}}};return o(n,0)}function Tu(n){for(;;){let u=n;switch(u.TAG){case"Lam":return{TAG:"Lam",name:u.name,body:Tu(u.body)};case"App":let r=Tu(u.func),c=Tu(u.arg);if(r.TAG!=="Lam")return{TAG:"App",func:r,arg:c};n=Xe(r.body,[c],0);continue;default:return u}}}function jm(n,u){for(;;){let r=u,c=n;switch(c.TAG){case"Symbol":return r.TAG==="Symbol"&&c.name===r.name?c.constructor===r.constructor:!1;case"Var":return r.TAG==="Var"?c.idx===r.idx:!1;case"Schematic":return r.TAG==="Schematic"?c.schematic===r.schematic:!1;case"Lam":if(r.TAG!=="Lam")return!1;u=r.body,n=c.body;continue;case"App":if(r.TAG!=="App"||!jm(c.func,r.func))return!1;u=r.arg,n=c.arg;continue}}}function v1(n,u){for(;;){let r=u,c=n;switch(c.TAG){case"Var":return c.idx===r;case"Symbol":case"Schematic":return!1;case"Lam":u=r+1|0,n=c.body;continue;case"App":if(v1(c.func,r))return!0;n=c.arg;continue}}}function pc(n){let u;switch(n.TAG){case"Lam":u={TAG:"Lam",name:n.name,body:pc(n.body)};break;case"App":u={TAG:"App",func:pc(n.func),arg:pc(n.arg)};break;default:u=n}if(u.TAG!=="Lam")return u;let r=u.body;if(r.TAG!=="App")return u;let c=r.arg;if(c.TAG!=="Var"||c.idx!==0)return u;let f=r.func;if(v1(f,0))return u;{let o=(m,h)=>{switch(m.TAG){case"Var":let y=m.idx;return y>h?{TAG:"Var",idx:y-1|0}:m;case"Symbol":case"Schematic":return m;case"Lam":return{TAG:"Lam",name:m.name,body:o(m.body,h+1|0)};case"App":return{TAG:"App",func:o(m.func,h),arg:o(m.arg,h)}}};return o(f,0)}}function Ve(n){return pc(Tu(n))}function Ze(n,u){return jm(Ve(n),Ve(u))}function cS(){}function Me(n,u){for(;;){let r=n;switch(r.TAG){case"Symbol":case"Var":return r;case"Schematic":let c=pm(u,r.schematic);if(c===void 0)return r;n=c;continue;case"Lam":return{TAG:"Lam",name:r.name,body:Me(r.body,u)};case"App":return{TAG:"App",func:Me(r.func,u),arg:Me(r.arg,u)}}}}let sS=ju;function A1(n,u){let r=ju(n,c=>Me(c,u));return jc(r,u,(c,f,o)=>f!==void 0?f:o!==void 0?o:void 0)}function fS(n,u){return $t(n)===$t(u)?xA(n,(r,c)=>{let f=pm(u,r);return f!==void 0?Ze(c,f):!1}):!1}function Ot(n){if(n.TAG!=="App")return[n,[]];let u=Ot(n.func);return[u[0],u[1].concat([n.arg])]}function _u(n,u){for(;;){let r=u,c=n;if(r.length===0)return c;let f=Qe(r[0],void 0);u=r.slice(1),n={TAG:"App",func:c,arg:f}}}function Ke(n){return Ot(n)[0].TAG!=="Schematic"}function Xo(n){let u=Ot(n),r=u[0];if(r.TAG!=="Schematic")return;let c=u[1].map(f=>{if(f.TAG==="Var")return f.idx});if(c.every(v_))return[r.schematic,c.map(A_)]}function oS(n,u){let r=n.length-1|0;for(;;){let c=r;if(c<0)return;if(De(Cl(n,c),u))return c;r=c-1|0}}function mS(n,u){let r=u.length,c=ke(u,-1,jt),f=aA(c+1|0,y=>{let p=oS(u,y);return p!==void 0?{TAG:"Var",idx:(r-1|0)-p|0}:{TAG:"Symbol",name:"_unused",constructor:!1}}),o=Xe(n,f,0),m=r,h=o;for(;;){let y=h,p=m;if(p<=0)return y;h={TAG:"Lam",name:"x",body:y},m=p-1|0}}function _1(n,u){for(;;){let r=u;switch(r.TAG){case"Symbol":case"Var":return!1;case"Schematic":return r.schematic===n;case"Lam":u=r.body;continue;case"App":if(_1(n,r.func))return!0;u=r.arg;continue}}}function dS(n){let u={contents:void 0},r=(c,f)=>{for(;;){let o=f,m=c;switch(m.TAG){case"Var":let h=m.idx;if(h>=o){u.contents=kc(u.contents,h-o|0);return}else return;case"Symbol":case"Schematic":return;case"Lam":f=o+1|0,c=m.body;continue;case"App":r(m.func,o),c=m.arg;continue}}};return r(n,0),u.contents}function Wp(n,u){let r=Xo(n);if(r===void 0)return;let c=r[1],f=r[0];if(_1(f,u))return;let o=x_(c);if(N_(dS(u),o))return he(hm([[f,mS(u,c)]]))}function S1(n,u,r){for(;;){let c=u,o=Tu(n),m=Tu(c);if(jm(o,m))return he(void 0);if(o.TAG==="Lam"){let A=o.body;if(m.TAG==="Lam"){u=m.body,n=A;continue}u={TAG:"App",func:$e(m,1,void 0),arg:{TAG:"Var",idx:0}},n=A;continue}if(m.TAG==="Lam"){u=m.body,n={TAG:"App",func:$e(o,1,void 0),arg:{TAG:"Var",idx:0}};continue}let h=Xo(o),y=Xo(m);if(h!==void 0&&y!==void 0){let A=h[0];if(A===y[0]){let $=h[1],k=y[1];if(r===void 0)return;let Q=$.length;if(Q!==k.length)return;let _=rA(By(0,Q-1|0),R=>De(Cl($,R),Cl(k,R))),O=g1(r),j=ke(_,{TAG:"Schematic",schematic:O},(R,D)=>({TAG:"App",func:R,arg:{TAG:"Var",idx:(Q-1|0)-D|0}}));return he(hm([[A,((R,D)=>{for(;;){let C=D,F=R;if(F<=0)return C;D={TAG:"Lam",name:"x",body:C},R=F-1|0}})(Q,j)]]))}}let p=Wp(o,m);if(p!==void 0)return he(be(p));let T=Wp(m,o);if(T!==void 0)return he(be(T));{let A=Ot(o),$=A[1],k=A[0],Q=Ot(m),_=Q[1],O=Q[0],j;switch(k.TAG){case"Symbol":j=O.TAG==="Symbol"?k.name===O.name&&k.constructor===O.constructor:!1;break;case"Var":j=O.TAG==="Var"?k.idx===O.idx:!1;break;default:j=!1}if(!(j&&$.length===_.length))return;let S=$.length,R=0,D;for(;;){let C=D,F=R;if(F>=S)return he(C);let B=S1(Me(Cl($,F),C),Me(Cl(_,F),C),r);if(B===void 0)return;D=A1(C,be(B)),R=F+1|0}}}}function Je(n,u,r){let c=S1(n,u,r);return c!==void 0?Kv(be(c),Tt):Tt}function hS(n){return n.concat(".")}function T1(n){let u=new RegExp("^([^\\s.|\\[\\]()]+)\\.","y"),r=u.exec(n.trim());if(r==null)return{TAG:"Error",_0:"not a meta name"};let c=r.slice(1);return c.length!==1?{TAG:"Error",_0:"impossible happened"}:{TAG:"Ok",_0:[c[0],n.trim().slice(u.lastIndex)]}}function Fe(n,u){return u(n)}function E1(n,u){let r=n,c=0,f=[];for(;;){let o=f,m=c,h=r;if(m>=u.length)return[h,o];let y=Cl(u,m);switch(h.TAG){case"Lam":switch(y){case"Func":case"Arg":return;case"Body":f=uA(o,[h.name]),c=m+1|0,r=h.body;continue}case"App":switch(y){case"Func":c=m+1|0,r=h.func;continue;case"Arg":c=m+1|0,r=h.arg;continue;case"Body":return}default:return}}}function yc(n,u,r,c){if(r>=u.length)return c;let f=Cl(u,r);switch(n.TAG){case"Lam":switch(f){case"Func":case"Arg":return n;case"Body":return{TAG:"Lam",name:n.name,body:yc(n.body,u,r+1|0,c)}}case"App":let o=n.arg,m=n.func;switch(f){case"Func":return{TAG:"App",func:yc(m,u,r+1|0,c),arg:o};case"Arg":return{TAG:"App",func:m,arg:yc(o,u,r+1|0,c)};case"Body":return n}default:return n}}function x1(n,u,r){return yc(n,u,0,r)}function Om(n,u){return{TAG:"App",func:{TAG:"App",func:{TAG:"Symbol",name:"_=_",constructor:!1},arg:n},arg:u}}function Jc(n){if(n.TAG!=="App")return;let u=n.func;if(u.TAG!=="App")return;let r=u.func;if(r.TAG==="Symbol"&&r.name==="_=_"&&!r.constructor)return[u.arg,n.arg]}function G1(n){let u=(r,c,f)=>{let o=[f,r,c],m;switch(r.TAG){case"Lam":m=u(r.body,c.concat([r.name]),f.concat(["Body"]));break;case"App":m=u(r.func,c,f.concat(["Func"])).concat(u(r.arg,c,f.concat(["Arg"])));break;default:m=[]}return[o].concat(m)};return u(n,[],[])}function pS(n){switch(n){case"Func":return"F";case"Arg":return"A";case"Body":return"B"}}function N1(n){return n.map(pS).join("")}function j1(n){let u=new RegExp("([FAB]*)","y"),r=y=>{switch(y){case"A":return"Arg";case"F":return"Func";default:return"Body"}},c=u.exec(n);if(c==null)return[[],n];let f=n.slice(u.lastIndex),o=c.slice(1),m=o.length;return m!==1?m!==0?[[],n]:[[],n]:[o[0].split("").map(r),f]}let O1=im(h1(d1("eq","_=_","NonAssoc")),Y_),yS=/^\\(\d+)/,gS=/^\?(\d+)/;function bS(n,u,r,c,f){let o=qt(n),m=yS.exec(o);if(m==null){if(vu(o,0)==="`"){let S=vn(Yl(o,1));return S!==void 0?{TAG:"Ok",_0:[{TAG:"Symbol",name:S[0],constructor:!1},S[1]]}:{TAG:"Error",_0:"expected identifier after `"}}if(vu(o,0)==="("){let S=Yl(o,1),R=vn(S);if(R!==void 0){let B=R[1],E=R[0];if(vu(qt(B),0)==="."){let b=Yl(qt(B),1),N=f(b,[E].concat(r),c);if(N.TAG!=="Ok")return{TAG:"Error",_0:N._0};let H=N._0,L=qt(H[1]);return vu(L,0)===")"?{TAG:"Ok",_0:[{TAG:"Lam",name:E,body:H[0]},Yl(L,1)]}:{TAG:"Error",_0:"expected closing paren after lambda body"}}}let D=f(S,r,c);if(D.TAG!=="Ok")return{TAG:"Error",_0:D._0};let C=D._0,F=qt(C[1]);return vu(F,0)===")"?{TAG:"Ok",_0:[C[0],Yl(F,1)]}:{TAG:"Error",_0:"expected closing paren"+F}}let $=gS.exec(o);if($==null){if(vu(o,0)==="@"){let F=vn(Yl(o,1));return F!==void 0?{TAG:"Ok",_0:[{TAG:"Symbol",name:F[0],constructor:!0},F[1]]}:{TAG:"Error",_0:"expected constructor name after @"}}let S=vn(o);if(S===void 0)return{TAG:"Error",_0:"expected a term at: "+o};let R=S[1],D=S[0];if(kl(u,D))return{TAG:"Error",_0:'unexpected reserved word "'+D+'"'};let C=fm(r,F=>F===D);return C!==void 0?{TAG:"Ok",_0:[{TAG:"Var",idx:C},R]}:{TAG:"Ok",_0:[{TAG:"Symbol",name:D,constructor:!1},R]}}let k=$[0],Q=$[1];if(k===void 0)return{TAG:"Error",_0:"malformed schematic"};let _=be(k);if(_===void 0)return{TAG:"Error",_0:"malformed schematic"};if(Q===void 0)return{TAG:"Error",_0:"malformed schematic"};let O=be(Q);if(O===void 0)return{TAG:"Error",_0:"malformed schematic"};let j=Dl(O);return j!==void 0?(c!==void 0&&b1(c,j),{TAG:"Ok",_0:[{TAG:"Schematic",schematic:j},Yl(o,_.length)]}):{TAG:"Error",_0:"invalid schematic index"}}let h=m[0],y=m[1];if(h===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let p=be(h);if(p===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};if(y===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let T=be(y);if(T===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let A=Dl(T);return A!==void 0?A{switch(f.TAG){case"Symbol":let T=f.name;return he(f.constructor?n.leaf("constructor","@"+T):kl(y,T)?n.leaf("symbol-escaped","`"+T):n.leaf("symbol",T));case"Var":let A=f.idx,$=m[A],k;if($!==void 0){let _=fm(m,j=>j===$),O=A>=o?"metavar":"boundvar";k=De(_,A)?n.leaf(O,$):n.leaf("var-debruijn","\\"+A.toString())}else k=n.leaf("var-debruijn","\\"+A.toString());return he(k);case"Schematic":return he(n.leaf("schematic","?"+f.schematic.toString()));case"Lam":let Q=f.name;return he(n.seq([n.leaf("lambda-punct","("),n.leaf("binder",Q),n.leaf("lambda-punct",". "),p(f.body,o+1|0,[Q].concat(m),"Top"),n.leaf("lambda-punct",")")]));case"App":return}},tryStrip:f=>{let o=Ot(f),m=o[1];if(m.length>0)return[o[0],m]},tryOpHead:f=>{if(f.TAG==="Symbol"&&!f.constructor)return f.name}}}function TS(n,u,r,c,f,o){switch(n.TAG){case"Symbol":let m=n.name;return he(n.constructor?Pt.leaf("constructor","@"+m):kl(f,m)?Pt.leaf("symbol-escaped","`"+m):Pt.leaf("symbol",m));case"Var":let h=n.idx,y=r[h],p;if(y!==void 0){let A=fm(r,k=>k===y),$=h>=u?"metavar":"boundvar";p=De(A,h)?Pt.leaf($,y):Pt.leaf("var-debruijn","\\"+h.toString())}else p=Pt.leaf("var-debruijn","\\"+h.toString());return he(p);case"Schematic":return he(Pt.leaf("schematic","?"+n.schematic.toString()));case"Lam":let T=n.name;return he(Pt.seq([Pt.leaf("lambda-punct","("),Pt.leaf("binder",T),Pt.leaf("lambda-punct",". "),o(n.body,u+1|0,[T].concat(r),"Top"),Pt.leaf("lambda-punct",")")]));case"App":return}}function ES(n){let u=Ot(n),r=u[1];if(r.length>0)return[u[0],r]}function xS(n){if(n.TAG==="Symbol"&&!n.constructor)return n.name}let GS=y1(Pt)({printLeaf:TS,tryStrip:ES,tryOpHead:xS});function We(n,u,r){return GS.prettyPrintWithGrammar(n,!0,u,r)}let NS=H_,Ie=SS.parse;const ft=Object.freeze(Object.defineProperty({__proto__:null,PrintLeaf:R1,asEquation:Jc,combineGrammars:NS,concrete:Ke,emptyGrammar:O1,equivalent:Ze,fresh:g1,locate:E1,makeGen:rS,makeSubst:cS,mapSubst:sS,mapTerms:Fe,mergeSubsts:A1,mkEquation:Om,parse:Ie,parseMeta:T1,parsePath:j1,place:iS,positions:G1,prettyPrint:We,prettyPrintMeta:hS,prettyPrintPath:N1,reduce:Ve,replaceAt:x1,seen:b1,strip:Ot,substDeBruijn:Xe,substEqual:fS,substitute:Me,unify:Je,unstrip:_u,upshift:$e},Symbol.toStringTag,{value:"Module"}));let aa=Rt("AtomDef.AtomExpected"),D1=Kc(),jS=Kc();function OS(n,u,r){return{TAG:"Error",_0:"expected atom"}}function RS(n,u,r){return Tt}function DS(n,u){return"NIL (THIS IS AN ERROR!)"}function $S(n,u){throw{RE_EXN_ID:aa,Error:new Error}}function MS(n){throw{RE_EXN_ID:aa,Error:new Error}}function wS(n,u){throw{RE_EXN_ID:aa,Error:new Error}}function zS(n,u,r){throw{RE_EXN_ID:aa,Error:new Error}}function CS(n,u,r){throw{RE_EXN_ID:aa,Error:new Error}}function kS(n){throw{RE_EXN_ID:aa,Error:new Error}}function BS(n){throw{RE_EXN_ID:aa,Error:new Error}}let US={LeftBase:jS,Base:D1,unify:RS,prettyPrint:DS,parse:OS,substitute:wS,upshift:zS,substDeBruijn:CS,concrete:kS,reduce:BS,coerce:MS,onLeft:$S};function HS(n){throw{RE_EXN_ID:aa,Error:new Error}}let qS={make:HS};function Fc(n){return u=>(r=>(c=>{let f=n.Base,o=St.getOrElse,m=R=>he(R),h=(R,D)=>{if(R._0.RE_EXN_ID===n.Base.Tag)return he(D(R._1))},y=(R,D,C)=>Wy.or(Rl(n.parse(R,D,C),F=>[f.wrap(F[0]),F[1]]),()=>r.parse(R,D,C)),p=(R,D)=>o(h(R,C=>n.prettyPrint(C,D)),()=>r.prettyPrint(R,D)),T=(R,D,C)=>R._0.RE_EXN_ID===n.Base.Tag&&D._0.RE_EXN_ID===n.Base.Tag?Xr(n.unify(R._1,D._1,void 0),F=>zr(F,f.wrap)):r.unify(R,D,C),A=R=>o(h(R,D=>he(D)),()=>n.coerce(R)),j={LeftBase:f,Base:D1,unify:T,prettyPrint:p,parse:y,substitute:(R,D)=>o(h(R,C=>{let F=Jy.filterMap(D,(B,E)=>A(E));return f.wrap(n.substitute(C,F))}),()=>r.substitute(R,D)),upshift:(R,D,C)=>o(h(R,F=>f.wrap(n.upshift(F,D,C))),()=>r.upshift(R,D,C)),substDeBruijn:(R,D,C)=>o(h(R,F=>f.wrap(n.substDeBruijn(F,D.map(B=>Vc(B,A)),C))),()=>r.substDeBruijn(R,D,C)),concrete:R=>o(h(R,n.concrete),()=>r.concrete(R)),reduce:R=>o(h(R,D=>f.wrap(n.reduce(D))),()=>r.reduce(R)),coerce:m,onLeft:h};return{Atom:j,AtomView:(R=>({make:C=>{let F=C.scope,B=C.atom;return St.getOrElse(R.onLeft(B,E=>v.jsx(u.make,{atom:E,scope:F})),()=>v.jsx(c.make,{atom:B,scope:F}))}}))(j)}}))}var _o={exports:{}},pe={};var Ip;function VS(){if(Ip)return pe;Ip=1;var n=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),m=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),T=Symbol.for("react.lazy"),A=Symbol.for("react.activity"),$=Symbol.iterator;function k(G){return G===null||typeof G!="object"?null:(G=$&&G[$]||G["@@iterator"],typeof G=="function"?G:null)}var Q={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,O={};function j(G,Y,te){this.props=G,this.context=Y,this.refs=O,this.updater=te||Q}j.prototype.isReactComponent={},j.prototype.setState=function(G,Y){if(typeof G!="object"&&typeof G!="function"&&G!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,G,Y,"setState")},j.prototype.forceUpdate=function(G){this.updater.enqueueForceUpdate(this,G,"forceUpdate")};function S(){}S.prototype=j.prototype;function R(G,Y,te){this.props=G,this.context=Y,this.refs=O,this.updater=te||Q}var D=R.prototype=new S;D.constructor=R,_(D,j.prototype),D.isPureReactComponent=!0;var C=Array.isArray;function F(){}var B={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function b(G,Y,te){var ne=te.ref;return{$$typeof:n,type:G,key:Y,ref:ne!==void 0?ne:null,props:te}}function N(G,Y){return b(G.type,Y,G.props)}function H(G){return typeof G=="object"&&G!==null&&G.$$typeof===n}function L(G){var Y={"=":"=0",":":"=2"};return"$"+G.replace(/[=:]/g,function(te){return Y[te]})}var w=/\/+/g;function V(G,Y){return typeof G=="object"&&G!==null&&G.key!=null?L(""+G.key):Y.toString(36)}function q(G){switch(G.status){case"fulfilled":return G.value;case"rejected":throw G.reason;default:switch(typeof G.status=="string"?G.then(F,F):(G.status="pending",G.then(function(Y){G.status==="pending"&&(G.status="fulfilled",G.value=Y)},function(Y){G.status==="pending"&&(G.status="rejected",G.reason=Y)})),G.status){case"fulfilled":return G.value;case"rejected":throw G.reason}}throw G}function x(G,Y,te,ne,re){var fe=typeof G;(fe==="undefined"||fe==="boolean")&&(G=null);var de=!1;if(G===null)de=!0;else switch(fe){case"bigint":case"string":case"number":de=!0;break;case"object":switch(G.$$typeof){case n:case u:de=!0;break;case T:return de=G._init,x(de(G._payload),Y,te,ne,re)}}if(de)return re=re(G),de=ne===""?"."+V(G,0):ne,C(re)?(te="",de!=null&&(te=de.replace(w,"$&/")+"/"),x(re,Y,te,"",function(Sn){return Sn})):re!=null&&(H(re)&&(re=N(re,te+(re.key==null||G&&G.key===re.key?"":(""+re.key).replace(w,"$&/")+"/")+de)),Y.push(re)),1;de=0;var Ue=ne===""?".":ne+":";if(C(G))for(var Le=0;Le{let c=r[1];return tt(n,f=>{c.forEach(o=>{if(o>=f.contents){f.contents=o+1|0;return}})}),[r[0],c]})}let cT={op:lT,opInv:nT,opString:"+",openTerm:"nat(",closeTerm:")",formatMultiple:aT,formatMultipleConst:uT,parseConst:Em,parseVar:rT,parseSchema:iT},sT={schemas:void 0,vars:void 0,const:0};function fT(n){return{schemas:void 0,vars:void 0,const:n}}function oT(n){return{schemas:void 0,vars:Yy(void 0,n,1),const:0}}function mT(n,u){return{schemas:Yy(void 0,n,{allowed:u,count:1}),vars:void 0,const:0}}let $1=Kc(),dT=$1.Tag,hT=$1.wrap,ct={Const:cT,identity:sT,$$const:fT,$$var:oT,schematic:mT,Tag:dT,wrap:hT},pT=ja,gc={cmp:pT};function M1(n,u){return'"'+n.map(r=>{switch(r.TAG){case"String":return r._0;case"Var":return ym(r.idx,u);case"Schematic":return Zy(r.schematic,r.allowed,u)}}).join(" ")+'"'}function In(n,u){return n.flatMap(r=>{switch(r.TAG){case"String":case"Var":return[r];case"Schematic":let c=u.get(r.schematic);return c!==void 0?c:[r]}})}function w1(n){return ke(n,void 0,(u,r)=>{switch(r.TAG){case"String":case"Var":return u;case"Schematic":return wo(u,r.schematic,c=>wr(tt(c,f=>f+1|0),1))}})}function ey(n){return Ee(tt(GA(w1(n)),u=>u[1]),0)}function yT(n){return ke(n.map(u=>{switch(u.TAG){case"Var":return zc(Ql(gc),u.idx);case"String":case"Schematic":return Ql(gc)}}),Ql(gc),Bo)}let mc=new Map;function Wn(n,u){let r=new Map;return r.set(n,u),r}function ty(n){return n.length!==0?[Qe(n[0],void 0),n.slice(1)]:Kl({TAG:"Error",_0:"expected nonempty array"})}function ly(n,u){return Ee(tt(u,r=>[r]),[]).concat(n)}function gT(n,u,r){let c=(h,y)=>{switch(h.TAG){case"String":switch(y.TAG){case"String":return h._0===y._0;case"Var":case"Schematic":return!1}case"Var":switch(y.TAG){case"Var":return h.idx===y.idx;case"String":case"Schematic":return!1}case"Schematic":return!1}},f=(h,y)=>{for(;;){let p=y,T=h;if(T.length===0)return p.length!==0?[]:[mc];let A=ty(T),$=A[1],k=A[0];switch(k.TAG){case"String":case"Var":break;case"Schematic":let _=k.allowed,O=k.schematic;return By(0,p.length).map(j=>{let S=p.slice(0,j),R=yT(S),D=ko(_,gc);if(!Uo(R,D))return[];let C=Wn(O,S);return f(In($,C),In(p.slice(j),C)).map(F=>{let B=new Map;return Au(C.entries(),E=>{if(E!==void 0){B.set(E[0],In(E[1],F));return}}),Au(F.entries(),E=>{if(E!==void 0){B.set(E[0],In(E[1],C));return}}),B})}).flat()}if(p.length===0)return[];let Q=ty(p);if(!c(k,Q[0]))return[];y=Q[1],h=$}},o=ey(n),m=ey(u);if(o===0)return vo(void 0,void 0,f(u,n));if(m===0)return vo(void 0,void 0,f(n,u));if(jt(o,m)<=2){let h=p=>{let T={contents:!1},A=(Q,_,O,j)=>{for(;;){let S=j,R=O,D=_,C=Q,F=Dy(S,V=>De(V[0],[C,D])),B;if(F!==void 0){let V=Qe(S[F],void 0);B=[S.map((x,z)=>F===z?[[C,D],R+1|0]:x),V[1]]}else B=[[[[C,D],1]].concat(S),0];let E=B[0],b=jt(B[1],R),N=(V,q,x,z,Z,ae)=>{let G=(z!==void 0?z:!1)?[q,x]:[q.slice(1),x.slice(1)];return A(ly(In(G[0],V),Z),ly(In(G[1],V),ae),b,E).map(Y=>{let te=new Map;return Au(V.entries(),ne=>{if(ne!==void 0){te.set(ne[0],In(ne[1],Y));return}}),Au(Y.entries(),ne=>{if(ne===void 0)return;let re=ne[1],fe=ne[0];St.getOrElse(tt(te.get(fe),de=>{}),()=>{te.set(fe,re)})}),te})},H=(V,q)=>q.length>1&&EA(w1(q),V)?[]:b===p?[Wn(V,q)]:[];if(b>p)return T.contents=!0,[];if(De(C,D)&&b===p)return[mc];if(De(C,D))return[];let L=0,w=0;if(C.length!==1)w=2;else{let V=C[0];switch(V.TAG){case"String":case"Var":w=2;break;case"Schematic":return H(V.schematic,D)}}if(w===2)if(D.length!==1)L=1;else{let V=D[0];switch(V.TAG){case"String":case"Var":L=1;break;case"Schematic":return H(V.schematic,C)}}if(L===1){let V=(ae,ue,G,Y)=>{let te={TAG:"Schematic",schematic:ae,allowed:ue},ne=Y[0];if(ne===void 0)return N(Wn(ae,[]),G,Y,void 0,void 0,void 0);switch(ne.TAG){case"String":case"Var":break;case"Schematic":let re=ne.schematic,fe=ne.allowed,de={TAG:"Schematic",schematic:re,allowed:fe},Ue=N(Wn(ae,[]),G,Y,!0,void 0,void 0);return ae===re?Ue.concat(N(mc,G,Y,void 0,void 0,void 0)):[Ue,N(Wn(ae,[de,te]),G,Y,void 0,te,void 0),N(Wn(re,[te,de]),G,Y,void 0,void 0,de)].flat()}return[N(Wn(ae,[]),G,Y,!0,void 0,void 0),N(Wn(ae,[ne,{TAG:"Schematic",schematic:ae,allowed:ue}]),G,Y,void 0,te,void 0)].flat()},q=C[0],x=D[0],z=0,Z=0;if(q!==void 0)switch(q.TAG){case"String":case"Var":Z=3;break;case"Schematic":return V(q.schematic,q.allowed,C,D)}else{if(x===void 0)return b===p?[mc]:[];Z=3}if(Z===3){if(x===void 0)return[];switch(x.TAG){case"String":case"Var":z=2;break;case"Schematic":return V(x.schematic,x.allowed,D,C)}}if(z===2){if(q===void 0)return[];if(!De(q,x))return[];j=E,O=b,_=D.slice(1),Q=C.slice(1);continue}}}};return[A(n,u,0,[]).toSorted((Q,_)=>{let O=R=>ke(Array.from(zr(R,D=>D.length).values()),0,(D,C)=>D+C|0),j=O(Q),S=O(_);return jVA.cyrb53(OA(p,void 0,T=>M1(T,[])),void 0);return ky(xu([0,!0,void 0],p=>{if(!p[1])return;let T=p[0],A=h(T),$={contents:p[2]},k=A[0].filter(Q=>{let _=y(Q),O=G_($.contents,_);return $.contents=kc($.contents,_),!O});return[vo(void 0,void 0,k),[T+1|0,A[1],$.contents]]}))}else return Tt}function bT(n,u,r){let c=r!==void 0?r:0,f=u.length;return n.flatMap(o=>{switch(o.TAG){case"String":return[o];case"Var":let m=o.idx;if(m=f)return[{TAG:"Var",idx:m-f|0}];let h=u[m-c|0];if(h!==void 0)return h;throw{RE_EXN_ID:Hr,_1:"index "+(m-c|0).toString()+" not of sort string",Error:new Error};case"Schematic":return[{TAG:"Schematic",schematic:o.schematic,allowed:Et(o.allowed,y=>{if(!(y<(c+f|0)))return y-(c+f|0)|0})}]}})}function vT(n,u,r){let c=r!==void 0?r:0;return n.map(f=>{switch(f.TAG){case"String":return f;case"Var":let o=f.idx;return{TAG:"Var",idx:o>=c?o+u|0:o};case"Schematic":return{TAG:"Schematic",schematic:f.schematic,allowed:f.allowed.map(m=>m>=c?m+u|0:m)}}})}function AT(n,u,r){let c={contents:0},f=!1,o={contents:{TAG:"Ok",_0:[]}},m=O=>{let j=n.slice(c.contents,c.contents+5|0);o.contents={TAG:"Error",_0:"problem here: "+j+"...: "+O}},h=O=>{c.contents=c.contents+O|0},y=(O,j)=>{Rl(o.contents,S=>{S.push(O)}),tt(j,h)},p=O=>Fy(O,n.slice(c.contents)),T=()=>{let O=new RegExp("^"+XA),j=/^([!@#\$%\^~&*_+\-={};':|,.<>\/?]+)/,S=/^(\d+)/,R=wr(wr(p(O),p(j)),p(S));if(R===void 0)return m("expected string");let D=R[0];if(D.length!==1)return m("regex string lit error");let C=D[0];y({TAG:"String",_0:C},R[1])},A=()=>{let j=p(/\\([\$\?\\\"])/);if(j===void 0)return m("expected valid escaped character");let S=j[0];if(S.length!==1)return m("regex escaped error");let R=S[0];y({TAG:"String",_0:R},j[1])},$=O=>Qe(Dl(O),void 0),k=()=>{let j=p(/\?(\d+)\(((?:\d+\s*)*)\)/);if(j===void 0)return m("expected schematic literal");let S=j[0];if(S.length!==2)return m("schema lit regex error");let R=S[0],D=S[1],C=$(R),F=Ma(D.trim().split(/\s+/)).filter(B=>B!=="").map($);y({TAG:"Schematic",schematic:C,allowed:F},j[1])},Q=()=>{let O=/^\$\\(\d+)/,j=/^\$([a-zA-Z]\w*)/,S=p(O);if(S!==void 0){let B=S[0];if(B.length!==1)return m("var lit regex error");let E=B[0];return y({TAG:"Var",idx:$(E)},S[1])}let R=p(j);if(R===void 0)return m("expected var");let D=R[0];if(D.length!==1)return m("var regex error");let C=D[0],F=Oy(u,C);return F!==void 0?y({TAG:"Var",idx:F},R[1]):m("expected variable in scope")},_=p(/^\s*"/);for(_!==void 0?c.contents=_[1]:m("expected open quote");c.contents[O,n.slice(c.contents)])}function _T(n){return n}function ST(n){return n.every(u=>{switch(u.TAG){case"String":case"Var":return!0;case"Schematic":return!1}})}function TT(n){let u=n._1,r=n._0;if(r.RE_EXN_ID===qr.Tag)return[{TAG:"String",_0:u}];if(r.RE_EXN_ID!==$c.Tag)return r.RE_EXN_ID===Lr.Tag?u:r.RE_EXN_ID===ct.Tag&&$t(u.schemas)===0&&$t(u.vars)===0?[{TAG:"String",_0:u.const.toString()}]:void 0;let c;return c=u.TAG==="Var"?{TAG:"Var",idx:u.idx}:{TAG:"Schematic",schematic:u.schematic,allowed:u.allowed},[c]}function ny(n){let u=n.scope[n.idx];return u!==void 0&&n.scope.indexOf(u)===n.idx?v.jsx("span",{children:u,className:"term-metavar"}):v.jsxs("span",{children:["\\",n.idx],className:"term-metavar-unnamed"})}function ET(n){return[[v.jsx("span",{children:"(",className:"symbol"},"-1")],n,[v.jsx("span",{children:")",className:"symbol"},"-2")]].flat()}function xT(n){let u=n.scope,r=n.piece;switch(r.TAG){case"String":return v.jsx("span",{children:r._0,className:"term-const"});case"Var":return ny({idx:r.idx,scope:u});case"Schematic":return v.jsxs("span",{children:["?",r.schematic,v.jsx("span",{children:ET($r(r.allowed.map((c,f)=>Re.createElement(ny,gm({idx:c,scope:u},f)))," ")),className:"term-schematic-telescope"})],className:"term-schematic"})}}function GT(n){let u=n.scope;return v.jsxs("span",{children:['"',$r(n.atom.map((r,c)=>{let f=c.toString();return v.jsx(xT,{piece:r,scope:u},f)})," "),'"'],className:"term-compound"})}let So=Lr,_n={Base:Lr,unify:gT,prettyPrint:M1,parse:AT,substitute:In,upshift:vT,substDeBruijn:bT,concrete:ST,reduce:_T,coerce:TT},z1={make:GT},NT="^[^|(){}\\s\\-—][^(){}\\s]*",jT="^\\n?\\s*[-—][-—][\\-—]+[ ]*([^(){}|\\s\\-—][^(){}\\s]*)?";function st(n){return u=>{let r=(_,O)=>{let j=n.mapSubst(O,S=>n.upshift(S,_.vars.length,void 0));return{vars:_.vars,premises:_.premises.map(S=>r(S,j)),conclusion:u.reduce(u.substitute(_.conclusion,j))}},c=(_,O,j)=>{let S=j!==void 0?j:0,R=_.vars.length,D=O.map(C=>n.upshift(C,R,S));return{vars:_.vars,premises:_.premises.map(C=>c(C,D,S+R|0)),conclusion:u.reduce(u.substDeBruijn(_.conclusion,D,S+R|0))}},f=(_,O,j)=>{let S=j!==void 0?j:0,R=_.vars.length;return{vars:_.vars,premises:_.premises.map(D=>f(D,O,S+R|0)),conclusion:u.upshift(_.conclusion,O,S+R|0)}},o=(_,O)=>({premises:_.premises.map(j=>r(j,O)),conclusion:u.reduce(u.substitute(_.conclusion,O))}),m=(_,O)=>{if(O.length!==_.vars.length)throw{RE_EXN_ID:"Assert_failure",_1:["Rule.res",46,4],Error:new Error};let j=jl([O]);return j.reverse(),{premises:_.premises.map(S=>c(S,j,void 0)),conclusion:u.reduce(u.substDeBruijn(_.conclusion,j,void 0))}},h=(_,O,j)=>_.vars.map(S=>n.place(n.fresh(O,he(S)),j)),y=_=>{let O=new RegExp(NT,"y"),j=O.exec(_.trim());if(j==null)return{TAG:"Error",_0:"expected rule name"};let S=j[0];if(S===void 0)return{TAG:"Error",_0:"expected rule name"};let R=be(S);return R!==void 0&&R.trim()!==""?{TAG:"Ok",_0:[R,_.trim().slice(O.lastIndex)]}:{TAG:"Error",_0:"expected rule name"}},p=_=>{let O=new RegExp(jT,"y"),j=O.exec(_);if(j==null)return{TAG:"Error",_0:"expected vinculum"};let S=j[1];if(S!==void 0){let R=be(S);if(R!==void 0&&R.trim()!=="")return{TAG:"Ok",_0:[R,_.slice(O.lastIndex)]}}return{TAG:"Ok",_0:["",_.slice(O.lastIndex)]}},T=Rt("Rule.Make(Term)(Judgment).InternalParseError"),A=(_,O,j,S)=>{let R=j!==void 0?j:[];if(De(_.trim()[0],"[")){let D=String(_.trim().slice(1)),C={TAG:"Error",_0:""},F=[];for(;C=n.parseMeta(D),An(C);){let E=Kl(C);F.unshift(E[0]),D=E[1]}let B=[];try{for(;D.trim().slice(0,2)!=="|-"&&Yc(D.trim()[0],"]");){let H=A(D,O,F.concat(R),S);if(H.TAG==="Ok"){let L=H._0;D=L[1],B.push(L[0])}else throw{RE_EXN_ID:T,_1:"expected turnstile or premise",Error:new Error}}if(De(D.trim()[0],"]")){let H=D.trim().slice(1);if(D=H,B.length!==1)return{TAG:"Error",_0:"Conclusion appears to be multiple terms"};let L=B[0];return L.vars.length!==0||L.premises.length!==0?{TAG:"Error",_0:"Conclusion appears to be multiple terms"}:{TAG:"Ok",_0:[{vars:F,premises:[],conclusion:L.conclusion},H]}}D=D.trim().slice(2);let E=u.parse(D,O,F.concat(R),S);if(E.TAG!=="Ok")return{TAG:"Error",_0:E._0};let b=E._0,N=b[1];return De(N.trim()[0],"]")?(D=N.trim().slice(1),{TAG:"Ok",_0:[{vars:F,premises:B,conclusion:b[0]},D]}):{TAG:"Error",_0:"Expected closing bracket"}}catch(E){let b=la(E);if(b.RE_EXN_ID===T)return{TAG:"Error",_0:b._1};throw b}}else{let D=u.parse(_,O,R,S);if(D.TAG!=="Ok")return{TAG:"Error",_0:D._0};let C=D._0;return{TAG:"Ok",_0:[{vars:[],premises:[],conclusion:C[0]},C[1]]}}},$=(_,O,j,S)=>{let R=S!==void 0?S:[],D=String(_),C={TAG:"Error",_0:""},F=[];try{for(;C=n.parseMeta(D),An(C);){let L=Kl(C);F.unshift(L[0]),D=L[1]}let B={TAG:"Error",_0:""},E=[];for(;B=p(D),zy(B);){let L=A(D,O,F.concat(R),j);if(L.TAG==="Ok"){let w=L._0;D=w[1],E.push(w[0])}else throw{RE_EXN_ID:T,_1:L._0,Error:new Error}}let b=Kl(B);D=b[1];let N=u.parse(D,O,F.concat(R),j);if(N.TAG!=="Ok")return{TAG:"Error",_0:N._0};let H=N._0;return{TAG:"Ok",_0:[[{vars:F,premises:E,conclusion:H[0]},b[0]],H[1]]}}catch(B){let E=la(B);if(E.RE_EXN_ID===T)return{TAG:"Error",_0:E._1};throw E}},k=(_,O,j)=>{let S=j!==void 0?j:[];if(_.vars.length===0&&_.premises.length===0)return u.prettyPrint(_.conclusion,O,S);let R=_.vars.slice();return R.reverse(),"[".concat(R.map(n.prettyPrintMeta).join("").concat(" ").concat(_.premises.length===0?u.prettyPrint(_.conclusion,O,jl([_.vars,S])):_.premises.map(D=>k(D,O,jl([_.vars,S]))).join(" ").concat(" |- ").concat(u.prettyPrint(_.conclusion,O,jl([_.vars,S]))))).concat("]")};return{substitute:r,substDeBruijn:c,upshift:f,substituteBare:o,instantiate:m,genSchemaInsts:h,parseRuleName:y,parseVinculum:p,InternalParseError:T,parseInner:A,parseTopLevel:$,prettyPrintInline:k,prettyPrintTopLevel:(_,O,j,S)=>{let R=O!==void 0?O:"",D=S!==void 0?S:[],C=B=>{let E=Math.max(...B.map(b=>b.length).concat([4]));return B.concat(["-".repeat(E).concat(" ").concat(R)])},F=_.vars.map(n.prettyPrintMeta);return(F.reverse(),F).join("").concat(Mt).concat(C(_.premises.map(B=>k(B,j,jl([_.vars,D])))).concat([u.prettyPrint(_.conclusion,j,jl([_.vars,D]))]).map(B=>" ".concat(B)).join(Mt))}}}}function ea(n,u){if(n.TAG!=="Local")return"--"+n.name;let r=n.index,c=u[r];return c===void 0||Ry(u,!1,(o,m,h)=>o?!0:h>r?m===c:!1)?"-"+r.toString():c}function Uc(n,u){let c=/^(?:-(\d+)(?![^()\[\]{}|\-\s])|--([^()\[\]{}|\-\s][^()\[\]{}|\s]*)|([^()\[\]{}|\-\s][^()\[\]{}|\s]*))(.*)$/s.exec(n);if(c==null)return{TAG:"Error",_0:"Syntax error: Invalid identifier format"};let f=c.slice(1),o=Ee(f[3],""),m=f[0],h=f[1],y=f[2];if(m!==void 0){console.log(f);let T=Dl(m);return T!==void 0?{TAG:"Ok",_0:[{TAG:"Local",index:T},o]}:{TAG:"Error",_0:"Not that many local rules"}}if(h!==void 0)return{TAG:"Ok",_0:[{TAG:"Global",name:h},o]};if(y===void 0)return{TAG:"Error",_0:"Failed to match valid identifier token"};let p=Ry(u,-1,(T,A,$)=>A===y?$:T);return p===-1?{TAG:"Ok",_0:[{TAG:"Global",name:y},o]}:{TAG:"Ok",_0:[{TAG:"Local",index:p},o]}}let Zl={prettyPrint:ea,parse:Uc};function Ru(n){return u=>({Rule:st(n)(u),lookup:(o,m)=>m.TAG==="Local"?o.localFacts[m.index]:o.globalFacts[m.name],facts:o=>{let m=o.localFacts.map((y,p)=>[{TAG:"Local",index:p},y]),h=Object.entries(o.globalFacts).map(y=>[{TAG:"Global",name:y[0]},y[1]]);return m.concat(h)}})}function Yr(n){let u=(h,y)=>{switch(h.TAG){case"Action":return{TAG:"Action",_0:h._0,_1:y(h._1),_2:h._2};case"Delay":let p=h._1;return{TAG:"Delay",_0:h._0,_1:()=>p().map(T=>u(T,y))};case"Group":return{TAG:"Group",_0:h._0,_1:h._1.map(T=>u(T,y))}}};return{map:u,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:h=>({goal:h,assumptions:[]}),atAssumption:(h,y)=>({goal:[],assumptions:[[h,y]]}),combine:(h,y)=>{let p={};return h.assumptions.concat(y.assumptions).forEach(T=>{let A=T[0].toString(),$=Ee(p[A],[]);p[A]=$.concat(T[1])}),{goal:h.goal.concat(y.goal),assumptions:Object.entries(p).map(T=>[Qe(Dl(T[0]),void 0),T[1]])}},mapAttached:(h,y)=>({goal:h.goal.map(p=>u(p,y)),assumptions:h.assumptions.map(p=>[p[0],p[1].map(T=>u(T,y))])})}}function OT(n){return u=>{let r=st(n)(u),c=st(n)(u),f=(E,b)=>b.TAG==="Local"?E.localFacts[b.index]:E.globalFacts[b.name],o=E=>{let b=E.localFacts.map((H,L)=>[{TAG:"Local",index:L},H]),N=Object.entries(E.globalFacts).map(H=>[{TAG:"Global",name:H[0]},H[1]]);return b.concat(N)},m={Rule:c,lookup:f,facts:o},h=(E,b)=>{switch(E.TAG){case"Action":return{TAG:"Action",_0:E._0,_1:b(E._1),_2:E._2};case"Delay":let N=E._1;return{TAG:"Delay",_0:E._0,_1:()=>N().map(H=>h(H,b))};case"Group":return{TAG:"Group",_0:E._0,_1:E._1.map(H=>h(H,b))}}},k={map:h,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:E=>({goal:E,assumptions:[]}),atAssumption:(E,b)=>({goal:[],assumptions:[[E,b]]}),combine:(E,b)=>{let N={};return E.assumptions.concat(b.assumptions).forEach(H=>{let L=H[0].toString(),w=Ee(N[L],[]);N[L]=w.concat(H[1])}),{goal:E.goal.concat(b.goal),assumptions:Object.entries(N).map(H=>[Qe(Dl(H[0]),void 0),H[1]])}},mapAttached:(E,b)=>({goal:E.goal.map(N=>h(N,b)),assumptions:E.assumptions.map(N=>[N[0],N[1].map(H=>h(H,b))])})},Q=E=>E.subgoals.map((b,N)=>[N,b]),_=(E,b,N)=>{let H=E.subgoals.slice();return H[b]=N,{ruleName:E.ruleName,instantiation:E.instantiation,subgoals:H}},O=(E,b)=>({ruleName:E.ruleName,instantiation:E.instantiation,subgoals:E.subgoals.map(b)}),j=(E,b)=>({ruleName:E.ruleName,instantiation:E.instantiation.map(N=>n.substitute(N,b)),subgoals:E.subgoals}),S=Rt("Method.Derivation(Term)(Judgment).InternalParseError");return{Rule:r,Context:m,Results:k,subproofs:Q,setSubproof:_,map:O,substitute:j,InternalParseError:S,keywords:["by"],prettyPrint:(E,b,N,H,L,w)=>{let V=L!==void 0?L:0,q=E.instantiation.map(x=>n.prettyPrint(x,b,N));return"by (".concat([ea(E.ruleName,H)].concat(q).join(" ")).concat(") {").concat(E.subgoals.length>0?Mt:"").concat(E.subgoals.map(x=>w(x,b,N,H,V+2|0)).join(Mt)).concat("}")},parse:(E,b,N,H,L,w,V)=>{let q=E.trim();if(!De(q[0],"("))return{TAG:"Error",_0:"Expected ("};let x=Uc(q.slice(1).trim(),L);if(x.TAG!=="Ok")return{TAG:"Error",_0:x._0};let z=x._0;q=z[1];let Z=[],ae={TAG:"Error",_0:""};for(;ae=n.parse(q,N,H,he(w)),An(ae);){let G=Kl(ae);Z.push(G[0]),q=G[1].trim()}if(!De(q[0],")"))return{TAG:"Error",_0:") or term expected"};q=q.slice(1).trim();let ue=[];if(!De(q[0],"{"))return{TAG:"Error",_0:"{ expected"};q=q.slice(1).trim();try{for(;Yc(q[0],"}");){let G=V(q,N,H,L,w);if(G.TAG==="Ok"){let Y=G._0;ue.push(Y[0]),q=Y[1].trim()}else throw{RE_EXN_ID:S,_1:G._0,Error:new Error}}return De(q[0],"}")?(q=q.slice(1).trim(),{TAG:"Ok",_0:[{ruleName:z[0],instantiation:Z,subgoals:ue},q]}):{TAG:"Error",_0:"} or subgoal proof expected"}}catch(G){let Y=la(G);if(Y.RE_EXN_ID===S)return{TAG:"Error",_0:Y._1};throw Y}},apply:(E,b,N,H)=>({goal:Et(o(E),w=>{let V=w[1],q=w[0],x=ea(q,E.localFactNames),z=r.genSchemaInsts(V,N,E.fixes),Z=r.instantiate(V,z);if(!u.concrete(Z.conclusion))return;let ae=eA(jo(u.unify(Z.conclusion,b,he(N)),100)),ue=te=>({ruleName:q,instantiation:z.map(ne=>n.reduce(n.substitute(ne,te))),subgoals:Z.premises.map(H)}),G=ae.length;if(G!==1)return G!==0?{TAG:"Delay",_0:"intro "+x,_1:()=>ae.map(te=>({TAG:"Action",_0:Lc(nA(V.vars),z.map(re=>n.substitute(re,te))).map(re=>{let fe=n.prettyPrintMeta(re[0]);return fe.slice(0,fe.length-1|0)+" ↦ "+n.prettyPrint(re[1],n.emptyGrammar,E.fixes)}).join(", "),_1:ue(te),_2:te}))}:void 0;let Y=ae[0];return{TAG:"Action",_0:"intro "+x,_1:ue(Y),_2:Y}}),assumptions:[]}),check:(E,b,N,H)=>{let L=ea(E.ruleName,b.localFactNames),w=f(b,E.ruleName);if(w===void 0)return{TAG:"Error",_0:"Cannot find rule '"+L+"'"};if(w.vars.length!==E.instantiation.length)return{TAG:"Error",_0:"Incorrect number of binders"};let V=r.instantiate(w,E.instantiation),q=V.conclusion,x=V.premises;if(u.equivalent(u.reduce(q),u.reduce(N)))return E.subgoals.length===x.length?{TAG:"Ok",_0:{ruleName:E.ruleName,instantiation:E.instantiation,subgoals:Gu(E.subgoals,x,H)}}:{TAG:"Error",_0:"Incorrect number of subgoals"};let z=u.prettyPrint(q,n.emptyGrammar,b.fixes),Z=u.prettyPrint(N,n.emptyGrammar,b.fixes);return{TAG:"Error",_0:"Conclusion of rule '".concat(z).concat("' doesn't match goal '").concat(Z).concat("'")}}}}}function RT(n){return u=>{let r=st(n)(u),c=st(n)(u),f=(E,b)=>b.TAG==="Local"?E.localFacts[b.index]:E.globalFacts[b.name],m={Rule:c,lookup:f,facts:E=>{let b=E.localFacts.map((H,L)=>[{TAG:"Local",index:L},H]),N=Object.entries(E.globalFacts).map(H=>[{TAG:"Global",name:H[0]},H[1]]);return b.concat(N)}},h=(E,b)=>{switch(E.TAG){case"Action":return{TAG:"Action",_0:E._0,_1:b(E._1),_2:E._2};case"Delay":let N=E._1;return{TAG:"Delay",_0:E._0,_1:()=>N().map(H=>h(H,b))};case"Group":return{TAG:"Group",_0:E._0,_1:E._1.map(H=>h(H,b))}}},y=()=>({goal:[],assumptions:[]}),p=E=>({goal:E,assumptions:[]}),T=(E,b)=>({goal:[],assumptions:[[E,b]]}),A=(E,b)=>{let N={};return E.assumptions.concat(b.assumptions).forEach(H=>{let L=H[0].toString(),w=Ee(N[L],[]);N[L]=w.concat(H[1])}),{goal:E.goal.concat(b.goal),assumptions:Object.entries(N).map(H=>[Qe(Dl(H[0]),void 0),H[1]])}},k={map:h,emptyAttached:y,atGoal:p,atAssumption:T,combine:A,mapAttached:(E,b)=>({goal:E.goal.map(N=>h(N,b)),assumptions:E.assumptions.map(N=>[N[0],N[1].map(H=>h(H,b))])})},Q=Rt("Method.Elimination(Term)(Judgment).InternalParseError");return{Rule:r,Context:m,Results:k,InternalParseError:Q,keywords:["elim"],prettyPrint:(E,b,N,H,L,w)=>{let V=L!==void 0?L:0,q=E.subgoals.length>0?Mt:"",x=ea(E.ruleName,H),z=ea(E.elimName,H),Z=E.instantiation.map(ue=>n.prettyPrint(ue,b,N)).join(" "),ae=E.subgoals.map(ue=>w(ue,b,N,H,V+2|0)).join(Mt);return"elim ("+x+" "+z+" "+Z+") {"+q+ae+"}"},subproofs:E=>E.subgoals.map((b,N)=>[N,b]),setSubproof:(E,b,N)=>{let H=E.subgoals.slice();return H[b]=N,{ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:H}},map:(E,b)=>({ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:E.subgoals.map(b)}),substitute:(E,b)=>({ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation.map(N=>n.substitute(N,b)),subgoals:E.subgoals}),parse:(E,b,N,H,L,w,V)=>{let q={contents:E.trim()};return De(q.contents[0],"(")?xc(Uc(q.contents.slice(1).trim(),L),x=>{let z=x[0];return q.contents=x[1],xc(Uc(q.contents.trim(),L),Z=>{q.contents=Z[1];let ae=[],ue={TAG:"Error",_0:""};for(;ue=n.parse(q.contents,N,H,he(w)),An(ue);){let Y=Kl(ue);ae.push(Y[0]),q.contents=Y[1].trim()}if(!De(q.contents[0],")"))return{TAG:"Error",_0:") or term expected"};q.contents=q.contents.slice(1).trim();let G=[];if(!De(q.contents[0],"{"))return{TAG:"Error",_0:"{ expected"};q.contents=q.contents.slice(1).trim();try{for(;Yc(q.contents[0],"}");){let ne=V(q.contents,N,H,L,w);if(ne.TAG==="Ok"){let re=ne._0;G.push(re[0]),q.contents=re[1].trim()}else throw{RE_EXN_ID:Q,_1:ne._0,Error:new Error}}if(!De(q.contents[0],"}"))return{TAG:"Error",_0:"} or subgoal proof expected"};q.contents=q.contents.slice(1).trim();let Y=Z[0];return{TAG:"Ok",_0:[{ruleName:z,elimName:Y,instantiation:ae,subgoals:G},q.contents]}}catch(Y){let te=la(Y);if(te.RE_EXN_ID===Q)return{TAG:"Error",_0:te._1};throw te}})}):{TAG:"Error",_0:"Expected ("}},check:(E,b,N,H)=>{let L=ea(E.ruleName,b.localFactNames),w=ea(E.elimName,b.localFactNames),V=f(b,E.ruleName),q=f(b,E.elimName);if(V===void 0)return{TAG:"Error",_0:"Cannot find rule '"+L+"'"};if(q===void 0)return{TAG:"Error",_0:"Cannot find elimination fact '"+w+"'"};if(V.premises.length<=0)return{TAG:"Error",_0:"Rule "+L+" doesn't have any premises"};let x=r.instantiate(V,E.instantiation),z=x.conclusion,Z=x.premises,ae=Qe(Z[0],void 0),ue=Z.slice(1);if(ae.premises.length>0)return{TAG:"Error",_0:"Premise to eliminate in rule "+L+" has non-empty premises"};if(q.premises.length>0)return{TAG:"Error",_0:"Elimination motive (?) "+w+" has non-empty premises"};if(!u.equivalent(u.reduce(ae.conclusion),u.reduce(q.conclusion)))return{TAG:"Error",_0:"Premise to eliminate and elimination motive (?) "+w+" do not match"};if(u.equivalent(u.reduce(z),u.reduce(N))){if(E.subgoals.length===ue.length)return{TAG:"Ok",_0:{ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:Gu(E.subgoals,ue,H)}};let te=E.subgoals.length.toString(),ne=ue.length.toString();return{TAG:"Error",_0:"Number of subgoals ("+te+") doesn't match rule "+L+"'s remaining number ("+ne+")"}}let G=u.prettyPrint(z,n.emptyGrammar,b.fixes),Y=u.prettyPrint(N,n.emptyGrammar,b.fixes);return{TAG:"Error",_0:"Conclusion of rule '"+G+"' doesn't match goal '"+Y+"'"}},apply:(E,b,N,H)=>{let L=Object.entries(E.globalFacts).filter(q=>{let x=q[1];if(x.premises.length<=0)return!1;let z=Qe(x.premises[0],void 0);return z.premises.length===0?z.vars.length===0:!1}),V=E.localFacts.filter(q=>q.premises.length===0?q.vars.length===0:!1).map((q,x)=>{let z={TAG:"Local",index:x},Z=Qe(E.localFactNames[x],void 0);return T(x,[{TAG:"Delay",_0:"elim "+Z,_1:()=>{let ae=[];return L.forEach(ue=>{let G=ue[1],Y=ue[0],te=r.genSchemaInsts(G,N,E.fixes),ne=r.instantiate(G,te);Gc(jo(u.unify(Qe(ne.premises[0],void 0).conclusion,q.conclusion,he(N)),100),re=>{let fe=r.substituteBare(ne,re);Gc(jo(u.unify(fe.conclusion,b,he(N)),100),de=>{let Ue=n.mergeSubsts(re,de),Le=te.map(En=>n.reduce(n.substitute(En,Ue))),Sn={TAG:"Global",name:Y},Tn=G.premises.slice(1).map(H),ua={ruleName:Sn,elimName:z,instantiation:Le,subgoals:Tn};ae.push({TAG:"Action",_0:"with "+Y,_1:ua,_2:Ue})})})}),ae}}])});return ke(V,{goal:[],assumptions:[]},A)}}}}function DT(n){return u=>{let r=st(n)(u),m={Rule:st(n)(u),lookup:(B,E)=>E.TAG==="Local"?B.localFacts[E.index]:B.globalFacts[E.name],facts:B=>{let E=B.localFacts.map((N,H)=>[{TAG:"Local",index:H},N]),b=Object.entries(B.globalFacts).map(N=>[{TAG:"Global",name:N[0]},N[1]]);return E.concat(b)}},h=(B,E)=>{switch(B.TAG){case"Action":return{TAG:"Action",_0:B._0,_1:E(B._1),_2:B._2};case"Delay":let b=B._1;return{TAG:"Delay",_0:B._0,_1:()=>b().map(N=>h(N,E))};case"Group":return{TAG:"Group",_0:B._0,_1:B._1.map(N=>h(N,E))}}};return{Rule:r,Context:m,Results:{map:h,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:B=>({goal:B,assumptions:[]}),atAssumption:(B,E)=>({goal:[],assumptions:[[B,E]]}),combine:(B,E)=>{let b={};return B.assumptions.concat(E.assumptions).forEach(N=>{let H=N[0].toString(),L=Ee(b[H],[]);b[H]=L.concat(N[1])}),{goal:B.goal.concat(E.goal),assumptions:Object.entries(b).map(N=>[Qe(Dl(N[0]),void 0),N[1]])}},mapAttached:(B,E)=>({goal:B.goal.map(b=>h(b,E)),assumptions:B.assumptions.map(b=>[b[0],b[1].map(N=>h(N,E))])})},map:(B,E)=>({rule:B.rule,proof:E(B.proof),show:E(B.show)}),substitute:(B,E)=>({rule:r.substitute(B.rule,E),proof:B.proof,show:B.show}),keywords:["have"],prettyPrint:(B,E,b,N,H,L)=>{let w=H!==void 0?H:0;return"have ".concat(r.prettyPrintInline(B.rule,E,b)).concat(Mt).concat(L(B.proof,E,b,N,w)).concat(Mt).concat(L(B.show,E,b,N,w))},parse:(B,E,b,N,H,L,w)=>{let V=r.parseInner(B,b,N,he(L));if(V.TAG!=="Ok")return{TAG:"Error",_0:V._0};let q=V._0,x=w(q[1],b,N,H,L);if(x.TAG!=="Ok")return{TAG:"Error",_0:x._0};let z=x._0,Z=w(z[1].trim(),b,N,H,L);if(Z.TAG!=="Ok")return{TAG:"Error",_0:Z._0};let ae=Z._0;return{TAG:"Ok",_0:[{rule:q[0],proof:z[0],show:ae[0]},ae[1]]}},apply:(B,E,b,N)=>({goal:[],assumptions:[]}),subproofs:B=>[["Proof",B.proof],["Show",B.show]],setSubproof:(B,E,b)=>E==="Proof"?{rule:B.rule,proof:b,show:B.show}:{rule:B.rule,proof:B.proof,show:b},check:(B,E,b,N)=>{let H=N(B.proof,B.rule),L=N(B.show,{vars:[],premises:[B.rule],conclusion:b});return{TAG:"Ok",_0:{rule:B.rule,proof:H,show:L}}}}}}function $T(n){return u=>(r=>(c=>{let f=st(n)(u),y={Rule:st(n)(u),lookup:(b,N)=>N.TAG==="Local"?b.localFacts[N.index]:b.globalFacts[N.name],facts:b=>{let N=b.localFacts.map((L,w)=>[{TAG:"Local",index:w},L]),H=Object.entries(b.globalFacts).map(L=>[{TAG:"Global",name:L[0]},L[1]]);return N.concat(H)}},p=(b,N)=>{switch(b.TAG){case"Action":return{TAG:"Action",_0:b._0,_1:N(b._1),_2:b._2};case"Delay":let H=b._1;return{TAG:"Delay",_0:b._0,_1:()=>H().map(L=>p(L,N))};case"Group":return{TAG:"Group",_0:b._0,_1:b._1.map(L=>p(L,N))}}},T=()=>({goal:[],assumptions:[]}),A=b=>({goal:b,assumptions:[]}),$=(b,N)=>({goal:[],assumptions:[[b,N]]}),k=(b,N)=>{let H={};return b.assumptions.concat(N.assumptions).forEach(L=>{let w=L[0].toString(),V=Ee(H[w],[]);H[w]=V.concat(L[1])}),{goal:b.goal.concat(N.goal),assumptions:Object.entries(H).map(L=>[Qe(Dl(L[0]),void 0),L[1]])}},Q=(b,N)=>({goal:b.goal.map(H=>p(H,N)),assumptions:b.assumptions.map(H=>[H[0],H[1].map(L=>p(L,N))])}),_={map:p,emptyAttached:T,atGoal:A,atAssumption:$,combine:k,mapAttached:Q},O=(b,N)=>b.TAG==="First"?{TAG:"First",_0:r.map(b._0,N)}:{TAG:"Second",_0:c.map(b._0,N)},j=(b,N)=>b.TAG==="First"?{TAG:"First",_0:r.substitute(b._0,N)}:{TAG:"Second",_0:c.substitute(b._0,N)},S=r.keywords.concat(c.keywords);return{Rule:f,Context:y,Results:_,map:O,substitute:j,keywords:S,subproofs:b=>b.TAG==="First"?r.subproofs(b._0).map(N=>[{TAG:"FirstK",_0:N[0]},N[1]]):c.subproofs(b._0).map(N=>[{TAG:"SecondK",_0:N[0]},N[1]]),setSubproof:(b,N,H)=>b.TAG==="First"?N.TAG==="FirstK"?{TAG:"First",_0:r.setSubproof(b._0,N._0,H)}:b:N.TAG==="FirstK"?b:{TAG:"Second",_0:c.setSubproof(b._0,N._0,H)},apply:(b,N,H,L)=>k(Q(r.apply(b,N,H,L),w=>({TAG:"First",_0:w})),Q(c.apply(b,N,H,L),w=>({TAG:"Second",_0:w}))),check:(b,N,H,L)=>b.TAG==="First"?Rl(r.check(b._0,N,H,L),w=>({TAG:"First",_0:w})):Rl(c.check(b._0,N,H,L),w=>({TAG:"Second",_0:w})),prettyPrint:(b,N,H,L,w,V)=>{let q=w!==void 0?w:0;return b.TAG==="First"?r.prettyPrint(b._0,N,H,L,q,V):c.prettyPrint(b._0,N,H,L,q,V)},parse:(b,N,H,L,w,V,q)=>r.keywords.indexOf(N)>-1?Rl(r.parse(b,N,H,L,w,V,q),x=>[{TAG:"First",_0:x[0]},x[1]]):Rl(c.parse(b,N,H,L,w,V,q),x=>[{TAG:"Second",_0:x[0]},x[1]])}}))}function C1(n){return u=>(r=>{let c=st(n)(u),f=Ru(n)(u),o=Yr(),m=_=>r.keywords.concat(["?"]).find(O=>_.trim().startsWith(O)),h=(_,O)=>({fixes:_.fixes,assumptions:_.assumptions,method:tt(_.method,j=>r.map(r.substitute(j,O),S=>h(S,O))),display:_.display}),y=(_,O,j,S,R)=>{let D=R!==void 0?R:0,C=_.method,F=C!==void 0?r.prettyPrint(be(C),O,_.fixes.concat(j),S.concat(_.assumptions),D+2|0,y):"?",B=_.display,E;switch(B){case"Full":E="|-";break;case"Tree":E="|:";break;case"Summary":E="|.";break}let b=jl([_.fixes]);return b.reverse(),"".padStart(D," ").concat(b.map(N=>n.prettyPrintMeta(N).concat(" ")).join("")).concat(_.assumptions.join(" ")).concat(_.assumptions.length===0?E+" ":" "+E+" ").concat(F)},p=(_,O,j,S,R)=>{let D={TAG:"Error",_0:""},C=_.trim(),F=[];for(;D=n.parseMeta(C),An(D);){let x=Kl(D);C=x[1].trim(),F.unshift(x[0])}let B={TAG:"Error",_0:""},E=[];for(;B=c.parseRuleName(C),An(B);){let x=Kl(B);C=x[1].trim(),E.push(x[0])}let b=C.slice(0,2);if(b!=="|-"&&b!=="|:"&&b!=="|.")return console.log([F,E]),{TAG:"Error",_0:"expected turnstile or rule name".concat(C)};let N;switch(b){case"|.":N="Summary";break;case"|:":N="Tree";break;default:N="Full"}C=C.trim().slice(2).trim();let H=F.concat(j),L=S.concat(E),w=m(C);if(w===void 0)return{TAG:"Error",_0:"Expected keyword"};if(w==="?")return{TAG:"Ok",_0:[{fixes:F,assumptions:E,method:void 0,display:N},C.slice(1)]};C=C.slice(w.length);let V=r.parse(C,w,O,H,L,R,p);if(V.TAG!=="Ok")return{TAG:"Error",_0:V._0};let q=V._0;return{TAG:"Ok",_0:[{fixes:F,assumptions:E,method:he(q[0]),display:N},q[1]]}},T=(_,O,j)=>{let S=O.fixes.length,R=j.vars.length;if(O.fixes.length!==j.vars.length)return{TAG:"Error",_0:"Proof introduces a different number ("+S.toString()+") of variables than the rule ("+R.toString()+")"};let D=O.assumptions.length,C=j.premises.length;return D===C?{TAG:"Ok",_0:{fixes:O.fixes.concat(_.fixes),localFacts:_.localFacts.map(F=>c.upshift(F,j.vars.length,void 0)).concat(j.premises),localFactNames:_.localFactNames.concat(O.assumptions),globalFacts:_.globalFacts}}:{TAG:"Error",_0:"Proof introduces a different number ("+D.toString()+") of assumptions than the rule ("+C.toString()+")"}},A=_=>_.TAG==="Checked"?{TAG:"Checked",fixes:_.fixes,assumptions:_.assumptions,method:"Goal",rule:_.rule,display:_.display}:_,$=_=>{if(_.TAG!=="Checked")return _.raw;let O=_.method,j;return j=typeof O!="object"?void 0:he(r.map(O._0,$)),{fixes:_.fixes,assumptions:_.assumptions,method:j,display:_.display}},k=(_,O,j)=>{let S=T(_,O,j);if(S.TAG!=="Ok")return{TAG:"ProofError",raw:O,rule:j,msg:S._0};let R=S._0,D=O.method;if(D===void 0)return{TAG:"Checked",fixes:O.fixes,assumptions:O.assumptions,method:"Goal",rule:j,display:O.display};let C=r.check(be(D),R,j.conclusion,(F,B)=>k(R,F,B));return C.TAG==="Ok"?{TAG:"Checked",fixes:O.fixes,assumptions:O.assumptions,method:{TAG:"Do",_0:C._0},rule:j,display:O.display}:{TAG:"ProofError",raw:O,rule:j,msg:C._0}};return{Rule:c,Context:f,Results:o,parseKeyword:m,substitute:h,prettyPrint:y,parse:p,enter:T,toGoal:A,uncheck:$,check:k,substituteChecked:(_,O,j)=>_.TAG==="Checked"?k(O,h($(_),j),c.substitute(_.rule,j)):{TAG:"ProofError",raw:h(_.raw,j),rule:c.substitute(_.rule,j),msg:_.msg}}})}function k1(n){return u=>({make:c=>{let f=c.scope.map((o,m)=>{let h=c.editable;return v.jsx(Re.Fragment,{children:h!==void 0?u.makeEditableMeta(o,y=>h(Rc(c.scope,m,y))):u.makeMeta(o)},String(m))});return f.reverse(),f.length>0?v.jsx("span",{children:f,className:"rule-binders"}):null}})}function Du(n){return u=>(r=>{let c=st(n)(u),f=k1()(r.TermView),o=_=>{let O=_.rule,j=O.premises,S=O.vars,R=S.concat(St.getOr(_.scope,[]));return v.jsxs("span",{children:[v.jsx("span",{children:_.children,className:"rule-rulename"}),j.length>0?v.jsx("span",{children:"(",className:"symbol symbol-turnstile symbol-bold"}):"",v.jsx(f.make,{scope:S,editable:void 0}),j.map((D,C)=>v.jsx("span",{children:Re.createElement(o,gm({rule:D,style:_.style,grammar:_.grammar,scope:R,children:""},C)),className:"rule-context"},String(C))).flatMap((D,C)=>C===0?[D]:[v.jsx("span",{children:",",className:"symbol symbol-bold symbol-comma"},String(-C|0)),D]),j.length>0?v.jsx("span",{children:"⊢",className:"symbol symbol-turnstile symbol-bold"}):"",v.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:R}),j.length>0?v.jsx("span",{children:")",className:"symbol symbol-turnstile symbol-bold"}):""],className:"inline-rule"})},m={make:o},h=_=>({make:j=>{if(j.rule.premises.length===0)return o(j);let S=j.rule,R=S.premises,D=S.vars,C=D.concat(St.getOr(j.scope,[]));return v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(f.make,{scope:D,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:3}),R.map((F,B)=>v.jsx("td",{children:v.jsx(_.make,{rule:F,style:j.style,grammar:j.grammar,scope:C,children:""},String(B)),className:"rule-cell rule-premise"},String(B))),v.jsx("td",{children:v.jsx("span",{children:j.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:3})]}),v.jsx("tr",{children:v.jsx("td",{children:"⋮",className:"rule-cell",colSpan:R.length+1|0})}),v.jsx("tr",{children:v.jsx("td",{children:v.jsx(r.make,{judgment:S.conclusion,grammar:j.grammar,scope:C}),className:"rule-cell rule-hypothetical-conclusion",colSpan:R.length})})]}),className:"inference"})}}),y=_=>({make:j=>{let S=j.rule,R=S.premises,D=S.vars,C=D.concat(St.getOr(j.scope,[]));return v.jsx("div",{children:v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(f.make,{scope:D,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),R.length===0?v.jsx("td",{className:"rule-cell rule-spacer"}):R.map((F,B)=>v.jsx("td",{children:v.jsx(_.make,{rule:F,style:j.style,grammar:j.grammar,scope:C,children:""},String(B)),className:"rule-cell rule-premise"},String(B))),v.jsx("td",{children:v.jsx("span",{children:j.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),v.jsx("tr",{children:v.jsx("td",{children:v.jsx(r.make,{judgment:S.conclusion,grammar:j.grammar,scope:C}),className:"rule-cell rule-conclusion",colSpan:R.length})})]}),className:"inference"}),className:"axiom"})}}),p=_=>{if(_.rule.premises.length===0)return o(_);let O=_.rule,j=O.premises,S=O.vars,R=S.concat(St.getOr(_.scope,[]));return v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(f.make,{scope:S,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:3}),j.map((D,C)=>v.jsx("td",{children:v.jsx(o,{rule:D,style:_.style,grammar:_.grammar,scope:R,children:""},String(C)),className:"rule-cell rule-premise"},String(C))),v.jsx("td",{children:v.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:3})]}),v.jsx("tr",{children:v.jsx("td",{children:"⋮",className:"rule-cell",colSpan:j.length+1|0})}),v.jsx("tr",{children:v.jsx("td",{children:v.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:R}),className:"rule-cell rule-hypothetical-conclusion",colSpan:j.length})})]}),className:"inference"})},T=_=>{let O=_.rule,j=O.premises,S=O.vars,R=S.concat(St.getOr(_.scope,[]));return v.jsx("div",{children:v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(f.make,{scope:S,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),j.length===0?v.jsx("td",{className:"rule-cell rule-spacer"}):j.map((D,C)=>v.jsx("td",{children:v.jsx(p,{rule:D,style:_.style,grammar:_.grammar,scope:R,children:""},String(C)),className:"rule-cell rule-premise"},String(C))),v.jsx("td",{children:v.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),v.jsx("tr",{children:v.jsx("td",{children:v.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:R}),className:"rule-cell rule-conclusion",colSpan:j.length})})]}),className:"inference"}),className:"axiom"})},A={make:T},$=_=>{let O=_.rule,j=O.premises,S=O.vars,R=S.concat(St.getOr(_.scope,[]));return v.jsx("div",{children:v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(f.make,{scope:S,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),j.length===0?v.jsx("td",{className:"rule-cell rule-spacer"}):j.map((D,C)=>v.jsx("td",{children:v.jsx(o,{rule:D,style:_.style,grammar:_.grammar,scope:R,children:""},String(C)),className:"rule-cell rule-premise"},String(C))),v.jsx("td",{children:v.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),v.jsx("tr",{children:v.jsx("td",{children:v.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:R}),className:"rule-cell rule-conclusion",colSpan:j.length})})]}),className:"inference"}),className:"axiom"})};return{Rule:c,ScopeView:f,Inline:m,Hypothetical:h,TopLevel:y,Gentzen:A,Hybrid:{make:$},make:_=>{switch(_.style){case"Gentzen":return T(_);case"Linear":return o(_);case"Hybrid":return $(_)}}}})}function $u(n){return u=>{let r=st(n)(u),c={},f=n.emptyGrammar;return{Rule:r,empty:{facts:c,ruleStyle:void 0,grammar:f},combine:(h,y)=>{let p=Object.assign(Object.assign({},h.facts),y.facts),T=um(y.ruleStyle,h.ruleStyle,$=>$),A=n.combineGrammars(h.grammar,y.grammar);return{facts:p,ruleStyle:T,grammar:A}}}}}function MT(n){let u=n.onConfirm,r=n.label,c=Re.useState(()=>!1),f=c[1],o=Re.useState(()=>r),m=o[1],h=o[0],y=Re.useState(()=>r),p=y[1],T=y[0],A=Re.useState(()=>{}),$=A[1],k=A[0],Q=j=>{let S=u(T);if(S.TAG==="Ok")return m(D=>T),$(D=>{}),f(D=>!1);let R=S._0;p(D=>h),$(D=>R)},_=j=>{p(S=>h),$(S=>{}),f(S=>!1)},O=j=>$(S=>{});return v.jsx("div",{children:c[0]?v.jsxs("div",{children:[v.jsxs("div",{children:[v.jsx("input",{className:"auto-input",autoFocus:!0,size:Math.max(1,T.length),type:"text",value:T,onKeyDown:j=>{let S=j.key;return S==="Enter"?Q():S==="Escape"?_():void 0},onChange:j=>p(S=>j.target.value)}),v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-tick",onClick:Q}),v.jsx("span",{className:"editor-button button-icon button-icon-red typcn typcn-times",onClick:_})],className:"controls-row"}),k!==void 0?v.jsxs("div",{children:[v.jsx("span",{children:k}),v.jsx("span",{className:"editor-button button-icon button-icon-grey typcn typcn-times",onClick:O})],className:"error-box"}):null],className:"edit-wrapper"}):v.jsx("span",{children:h,className:"label-span",onClick:j=>{p(S=>h),$(S=>{}),f(S=>!0)}}),className:"editable-container"})}let Hc={make:MT};var To={exports:{}},xt={};var ay;function wT(){if(ay)return xt;ay=1;var n=Rm();function u(y){var p="https://react.dev/errors/"+y;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(u){console.error(u)}}return n(),To.exports=wT(),To.exports}var zT=B1();let Lo=Re.createContext({sidebarRef:{current:null}});function CT(n){let u={sidebarRef:n.sidebarRef};return Re.createElement(Lo.Provider,{value:u,children:n.children})}let kT=CT;function BT(n){return u=>(r=>(c=>{let f=st(n)(u),o=k1()(r.TermView),m=C1(n)(u)(c.Method),h=Yr(),y=b=>{let N=Re.useState(()=>[{label:void 0,nodes:b.initialNodes}]),H=N[1],L=N[0],w=(x,z)=>H(Z=>Z.concat([{label:x,nodes:z}])),V=x=>H(z=>z.length>1?z.slice(0,z.length-1|0):z),q=Cl(L,L.length-1|0);return v.jsxs("div",{children:[v.jsx("div",{children:Et(L,x=>x.label).map((x,z)=>v.jsx("div",{children:x,className:"breadcrumb-heading"},z.toString())),className:"breadcrumbs"}),L.length>1?v.jsx("button",{children:"← Back",className:"back-button",tabIndex:0,onClick:V}):null,v.jsx("div",{children:q.nodes.map((x,z)=>{switch(x.TAG){case"Action":let Z=x._2,ae=x._1,ue=x._0;return v.jsx("button",{children:ue,tabIndex:0,onClick:re=>b.onApply(ae,Z)},ue+z.toString());case"Delay":let G=x._1,Y=x._0;return v.jsx("button",{children:Y+" ...",tabIndex:0,onClick:re=>w(Y,G())},Y+z.toString());case"Group":let te=x._1,ne=x._0;return v.jsx("button",{children:ne+" →",tabIndex:0,onClick:re=>w(ne,te)},ne+z.toString())}}),className:"menu-options"})],className:"drill-down-container"})},p={make:y},T=b=>b.attached.assumptions.map(H=>{let L=H[0];return{TAG:"Group",_0:Ee(b.ctx.localFactNames[L],"#"+L.toString()),_1:H[1]}}).concat(b.attached.goal),A=b=>v.jsxs("div",{children:[v.jsxs("div",{children:[v.jsx(o.make,{scope:b.ctx.fixes,editable:void 0}),v.jsx(r.make,{judgment:b.goal,grammar:b.grammar,scope:b.ctx.fixes})],className:"sidebar-goal"}),v.jsx(y,{initialNodes:T(b),onApply:b.onApply})],className:"sidebar-content resizable-panel"}),$={topLevelNodes:T,make:A},k=Du(n)(u)(r),Q=b=>v.jsxs("span",{children:[v.jsx("div",{children:v.jsx("span",{className:"typcn typcn-arrow-maximise"}),className:"display-tab display-tab-right "+(b.display==="Full"?"display-tab-selected":""),onClick:N=>b.onChange("Full")}),v.jsx("div",{children:v.jsx("span",{className:"typcn typcn-tree"}),className:"display-tab "+(b.display==="Tree"?"display-tab-selected":""),onClick:N=>b.onChange("Tree")}),v.jsx("div",{children:v.jsx("span",{className:"typcn typcn-arrow-minimise"}),className:"display-tab display-tab-left "+(b.display==="Summary"?"display-tab-selected":""),onClick:N=>b.onChange("Summary")})]}),_={make:Q},O=b=>{let N=Re.useContext(Lo),H=Re.useState(()=>!1),L=H[1],w=Re.useId(),V=Z=>{if(!rm(Vc(Ec(Z.relatedTarget),ue=>Ec(ue.closest(".outside-click-group-"+w)))))return L(ue=>!1)},q=Z=>{if(console.log("setRef called",Z),Z==null)return;let ae=ue=>L(G=>!1);return Z.addEventListener("outsideclick",ae),()=>{Z.removeEventListener("outsideclick",ae)}},x=N.sidebarRef.current,z;if(x==null)z=null;else{let Z=c.Method.apply(b.ctx,b.conclusion,b.gen,ae=>m.check(b.ctx,{fixes:ae.vars,assumptions:Na(ae.premises.length,ue=>(ue+b.ctx.localFacts.length|0).toString()),method:void 0,display:b.display},ae));z=zT.createPortal(v.jsx("div",{children:v.jsx(A,{ctx:b.ctx,goal:b.conclusion,grammar:b.grammar,attached:Z,onApply:b.onApply}),className:"outside-click-group-"+w,onBlur:V}),x)}return v.jsx("div",{children:H[0]?v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"button-icon button-icon-blue typcn typcn-location"}),z]}):v.jsx("span",{className:"button-icon button-icon-blue typcn typcn-location-outline"}),ref:he(q),className:"proof-goal outside-click-group-"+w,tabIndex:0,onFocus:Z=>{L(ae=>!0),Z.stopPropagation()},onBlur:V})},j={make:O},S=b=>{let N=b.proof;if(N.TAG!=="Checked")return v.jsx("div",{children:N.msg,className:"error"});let H=N.display,L=N.rule,w=N.method,V=N.assumptions,q=N.fixes,x=m.enter(b.ctx,{fixes:q,assumptions:V,method:void 0,display:H},L);if(x.TAG!=="Ok")return v.jsx("div",{children:"context mismatch",className:"error"});let z=x._0;if(typeof w!="object")return v.jsx(O,{ctx:z,conclusion:L.conclusion,display:H,grammar:b.grammar,gen:b.gen,onApply:(ue,G)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:ue},rule:L,display:H},G)});let Z=w._0,ae=c.Method.subproofs(Z);return v.jsxs(v.Fragment,{children:[c.summary({method:Z,ctx:z,ruleStyle:b.ruleStyle,grammar:b.grammar,gen:b.gen,onChange:(ue,G)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:ue},rule:L,display:H},G)}),ae.length===0?null:ae.map((ue,G)=>{let Y=ue[0];return v.jsxs("span",{children:[G===0?"(":",",S({proof:ue[1],ctx:z,ruleStyle:b.ruleStyle,grammar:b.grammar,gen:b.gen,onChange:(te,ne)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:c.Method.setSubproof(Z,Y,te)},rule:L,display:H},ne)}),G===(ae.length-1|0)?")":null],className:"proof-summary-node"},String(G))})]})},R={make:S},D=b=>{let N=b.proof;if(N.TAG!=="Checked")return v.jsx("div",{children:N.msg,className:"error"});let H=N.display,L=N.rule,w=N.method,V=N.assumptions,q=N.fixes,x=m.enter(b.ctx,{fixes:q,assumptions:V,method:void 0,display:H},L);if(x.TAG!=="Ok")return v.jsx("div",{children:"context mismatch",className:"error"});let z=x._0,Z=0,ae;if(typeof w!="object")Z=1,ae=v.jsxs(v.Fragment,{children:[v.jsx("td",{children:v.jsx(O,{ctx:z,conclusion:L.conclusion,display:H,grammar:b.grammar,gen:b.gen,onApply:(Y,te)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:Y},rule:L,display:H},te)}),className:"rule-cell rule-premise"}),v.jsx("td",{children:"?",className:"rule-cell rule-rulebox",rowSpan:3})]});else{let Y=w._0,te=c.Method.subproofs(Y);Z=te.length,ae=v.jsxs(v.Fragment,{children:[te.length===0?v.jsx("td",{className:"rule-cell rule-spacer"}):te.map((ne,re)=>{let fe=ne[0];return v.jsx("td",{children:D({proof:ne[1],ctx:z,ruleStyle:b.ruleStyle,grammar:b.grammar,gen:b.gen,onChange:(de,Ue)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:c.Method.setSubproof(Y,fe,de)},rule:L,display:H},Ue)}),className:"rule-cell rule-premise"},String(re))}),v.jsxs("td",{children:[v.jsx("span",{children:c.summary({method:Y,ctx:z,ruleStyle:b.ruleStyle,grammar:b.grammar,gen:b.gen,onChange:(ne,re)=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:{TAG:"Do",_0:ne},rule:L,display:H},re)}),className:"rule-rulename"}),v.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash",onClick:ne=>b.onChange(m.toGoal(b.proof),n.makeSubst())})],className:"rule-cell rule-rulebox",rowSpan:3})]})}let ue={contents:0},G=Gu(V,L.premises,(Y,te)=>{ue.contents=ue.contents+1|0;let ne=re=>{let fe=f.parseRuleName(re.trim());if(fe.TAG!=="Ok")return{TAG:"Error",_0:fe._0};let de=fe._0[1];return de!==""?{TAG:"Error",_0:"Trailing characters ".concat(de)}:(b.onChange({TAG:"Checked",fixes:q,assumptions:Rc(V,ue.contents-1|0,re),method:w,rule:L,display:H},n.makeSubst()),{TAG:"Ok",_0:void 0})};return v.jsxs("span",{children:[ue.contents>1?v.jsx("span",{children:",",className:"term-symbol symbol-comma"}):null,v.jsx(k.make,{rule:te,style:"Linear",grammar:b.grammar,scope:z.fixes,children:v.jsx("span",{children:v.jsx(Hc.make,{label:Y,onConfirm:ne}),className:"rule-rulename-local"})})],className:"proof-tree-assumption"},(ue.contents-1|0).toString())});return v.jsx("table",{children:v.jsxs("tbody",{children:[v.jsxs("tr",{children:[v.jsx("td",{children:v.jsx(o.make,{scope:q,editable:Y=>b.onChange({TAG:"Checked",fixes:Y,assumptions:V,method:w,rule:L,display:H},n.makeSubst())}),className:"rule-cell rule-binderbox",rowSpan:3}),ae]}),v.jsx("tr",{children:v.jsxs("td",{children:[ue.contents>0?v.jsxs(v.Fragment,{children:[G,v.jsx("span",{children:"⊢",className:"term-symbol symbol-turnstile"})]}):null,v.jsx(r.make,{judgment:L.conclusion,grammar:b.grammar,scope:z.fixes})],className:"rule-cell rule-conclusion",colSpan:Z})})]}),className:"inference"})},C={make:D},F=(b,N)=>{Re.useContext(Lo),Re.useState(()=>!1);let H=b.proof;if(H.TAG!=="Checked")return v.jsx("div",{children:H.msg,className:"error"});let L=H.display,w=H.rule,V=H.method,q=H.assumptions,x=H.fixes,z=m.enter(b.ctx,{fixes:x,assumptions:q,method:void 0,display:L},w);if(z.TAG!=="Ok")return v.jsx("div",{children:"context mismatch",className:"error"});let Z=z._0,ae;if(q.length!==0){let G={contents:0};ae=v.jsxs(v.Fragment,{children:[v.jsx("span",{children:x.length!==0?"where:":"Assuming:",className:"proof-text"}),v.jsx("ul",{children:Gu(q,w.premises,(Y,te)=>{G.contents=G.contents+1|0;let ne=re=>{let fe=f.parseRuleName(re.trim());if(fe.TAG!=="Ok")return{TAG:"Error",_0:fe._0};let de=fe._0[1];return de!==""?{TAG:"Error",_0:"Trailing characters ".concat(de)}:(b.onChange({TAG:"Checked",fixes:x,assumptions:Rc(q,G.contents-1|0,re),method:V,rule:w,display:L},n.makeSubst()),{TAG:"Ok",_0:void 0})};return v.jsx("li",{children:v.jsx(k.make,{rule:te,style:b.ruleStyle,grammar:b.grammar,scope:Z.fixes,children:v.jsx("span",{children:v.jsx(Hc.make,{label:Y,onConfirm:ne}),className:"rule-rulename-local"})})},(G.contents-1|0).toString())}),className:"proof-assumptions proof-assumptions-".concat(String(b.ruleStyle))})]})}else ae=v.jsx(v.Fragment,{});let ue;return ue=typeof V!="object"?v.jsx(O,{ctx:Z,conclusion:w.conclusion,display:L,grammar:b.grammar,gen:b.gen,onApply:(G,Y)=>b.onChange({TAG:"Checked",fixes:x,assumptions:q,method:{TAG:"Do",_0:G},rule:w,display:L},Y)}):v.jsxs(v.Fragment,{children:[v.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash floating-delete",onClick:G=>b.onChange(m.toGoal(b.proof),n.makeSubst())}),Re.createElement(c.make(G=>N({proof:G.proof,ctx:G.ctx,ruleStyle:G.ruleStyle,grammar:G.grammar,gen:G.gen,onChange:G.onChange})),{method:V._0,ctx:Z,ruleStyle:b.ruleStyle,grammar:b.grammar,gen:b.gen,onChange:(G,Y)=>b.onChange({TAG:"Checked",fixes:x,assumptions:q,method:{TAG:"Do",_0:G},rule:w,display:L},Y)})]}),v.jsxs("div",{children:[x.length!==0?v.jsxs(v.Fragment,{children:[v.jsx("span",{children:"For any ",className:"proof-text"}),v.jsx(o.make,{scope:x,editable:G=>b.onChange({TAG:"Checked",fixes:G,assumptions:q,method:V,rule:w,display:L},n.makeSubst())})]}):v.jsx(v.Fragment,{}),ae,v.jsxs("div",{children:[v.jsx("span",{children:"Show: ",className:"proof-text"}),v.jsx("span",{children:v.jsx(r.make,{judgment:w.conclusion,grammar:b.grammar,scope:Z.fixes}),className:"proof-judgement"}),ue],className:"proof-show"})]})},B={make:F},E=b=>{let N=b.proof;if(N.TAG!=="Checked")return v.jsx("div",{children:N.msg,className:"error"});let H=N.display,L=N.rule,w=N.method,V=N.assumptions,q=N.fixes,x=Z=>b.onChange({TAG:"Checked",fixes:q,assumptions:V,method:w,rule:L,display:Z},n.makeSubst()),z;switch(H){case"Full":z=F(b,E);break;case"Tree":z=v.jsx("div",{children:D(b),className:"proof-tree"});break;case"Summary":z=v.jsxs("div",{children:[S(b),v.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash",onClick:Z=>b.onChange(m.toGoal(b.proof),n.makeSubst())})],className:"proof-summary"});break}return v.jsxs("div",{children:[v.jsx(Q,{display:H,onChange:x}),z],className:"proof-step"})};return{Rule:f,ScopeView:o,Proof:m,Results:h,ResultsView:p,SidebarView:$,linearStyle:"Linear",RuleView:k,DisplayModeTabs:_,GoalButton:j,SummaryView:R,TreeView:C,FullView:B,make:E}}))}function U1(n){return u=>(r=>(c=>{let f=st(n)(u),o=C1(n)(u)(c.Method),m=Ru(n)(u),h=BT(n)(u)(r)(c),y=Du(n)(u)(r),p=$u(n)(u);return{Rule:f,Proof:o,Context:m,ProofView:h,RuleView:y,Ports:p,serialise:(k,Q)=>f.prettyPrintTopLevel(k.rule,k.name,Q.grammar,void 0).concat(` +(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))c(f);new MutationObserver(f=>{for(const o of f)if(o.type==="childList")for(const m of o.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&c(m)}).observe(document,{childList:!0,subtree:!0});function r(f){const o={};return f.integrity&&(o.integrity=f.integrity),f.referrerPolicy&&(o.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?o.credentials="include":f.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function c(f){if(f.ep)return;f.ep=!0;const o=r(f);fetch(f.href,o)}})();function Tv(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var po={exports:{}},Nr={};var Up;function Ev(){if(Up)return Nr;Up=1;var n=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function r(c,f,o){var m=null;if(o!==void 0&&(m=""+o),f.key!==void 0&&(m=""+f.key),"key"in f){o={};for(var h in f)h!=="key"&&(o[h]=f[h])}else o=f;return f=o.ref,{$$typeof:n,type:c,key:m,ref:f!==void 0?f:null,props:o}}return Nr.Fragment=u,Nr.jsx=r,Nr.jsxs=r,Nr}var qp;function xv(){return qp||(qp=1,po.exports=Ev()),po.exports}var b=xv();let Dr=[];function Hp(n){return new Promise((u,r)=>{const c=new XMLHttpRequest;c.open("GET",n),c.responseType="document",c.onload=()=>{c.responseXML?u({doc:c.responseXML,contentType:c.getResponseHeader("content-type")||""}):r(new Error(`Failed to parse document at ${n}`))},c.onerror=()=>r(new Error(`Network error fetching ${n}`)),c.send()})}async function Gv(n){if(n in An)return console.log(An[n],"URL"),An[n];{let u=n.split("/").slice(0,-1).join("/");const{doc:r,contentType:c}=await Hp(u),f=/\bxml\b/i.test(c)&&!/html/i.test(c);let o;if(f){const{doc:m}=await Hp("/default.xsl"),h=new XSLTProcessor;h.importStylesheet(m),o=h.transformToDocument(r)}else o=r;for(let m of jy)for(let h of o.querySelectorAll(m))window.customElements.upgrade(document.adoptNode(h));for(;Dr.length;)An[Dr.shift()??""]?.initialise();if(n in An)return An[n];throw"ERROR"}}class Nv{url;component;subscribers;deps;status;addSubscriber(u){this.subscribers.push(u),this.status=="ready"&&u.dependencyReady(this.url)}initialise;dependencyReady;notifySubscribers;constructor(u,r,c,f,o,m){this.url=u,this.status="loading",this.deps={};let h=[];this.subscribers=[];for(let p of f)p!=""&&(h.push(p),this.deps[p]=null);this.component=null,this.notifySubscribers=function(p){if(console.log("NOTIFY",this.url,"subscriber count:",this.subscribers.length,this.subscribers.map(S=>S.url)),this.component!=null){for(let S of this.subscribers)S.component!=null&&S.component.dependencyChanged(this.url,this.component,p);window.localStorage.setItem(this.url,this.component.toString())}};let y=(p,S,v)=>{console.log("Setting up ",p,S),this.component=new o(p,S,R=>{this.notifySubscribers(R)},R=>{this.status="ready",v&&queueMicrotask(()=>{for(let U of this.subscribers)U.dependencyReady(this.url)})},R=>{y(c,S,!1),this.notifySubscribers(R)},m)};this.initialise=function(){for(let p in this.deps)Gv(p).then(S=>{this.deps[p]=S,S.addSubscriber(this)});h.length==0&&y(r,{},!0)},this.dependencyReady=function(p){let S=h.indexOf(p);if(S>-1&&h.splice(S,1),h.length==0){let v={};for(let R in this.deps){let U=this.deps[R]?.component;U!=null&&U!=null&&(v[R]=U)}y(r,v,!0)}}}}let jy=[],An={};function jv(n){let u=[];for(const r in n){const c=n[r];jy.push(r),window.customElements.define(r,class extends HTMLElement{constructor(){super();let f=this.attributes.getNamedItem("id")?.value??"default";Dr.push(f);let o=(this.attributes.getNamedItem("deps")?.value??"").trim().split(/\s+/).filter(Boolean);o=[...new Set(o)];let m=this.textContent,h=window.localStorage.getItem(f)??this.textContent;this.innerHTML="loading",this.id in An?this.innerHTML="duplicate element":An[this.id]=new Nv(this.id,h,m,o,c,this)}}),u.push(window.customElements.whenDefined(r))}Promise.all(u).then(()=>{for(;Dr.length;)An[Dr.shift()??""]?.initialise()})}function he(n){return n===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:n.BS_PRIVATE_NESTED_SOME_NONE+1|0}:n}function am(n){if(n!=null)return he(n)}function ve(n){if(n===null||n.BS_PRIVATE_NESTED_SOME_NONE===void 0)return n;let u=n.BS_PRIVATE_NESTED_SOME_NONE;if(u!==0)return{BS_PRIVATE_NESTED_SOME_NONE:u-1|0}}function Ga(n,u){if(n<=0)return[];let r=new Array(n);for(let c=0;cu)}function $y(n,u){return nu?n:u}function Ov(n,u){if(u===0)throw{RE_EXN_ID:"Division_by_zero",Error:new Error};return n/u|0}function Rv(n,u){if(u===0)throw{RE_EXN_ID:"Division_by_zero",Error:new Error};return n%u}function Dv(n,u){return{hd:u,tl:n}}function $v(n){let u=n,r=0;for(;;){let c=r,f=u;if(f===0)return c;r=c+1|0,u=f.tl}}function Mv(n,u,r){for(;;){let c=r,f=u;if(c===0)return;n[f]=c.hd,r=c.tl,u=f+1|0}}function wv(n){let u=$v(n),r=new Array(u);return Mv(r,0,n),r}function zv(n){return n==null?!1:typeof n.RE_EXN_ID=="string"}function la(n){return zv(n)?n:{RE_EXN_ID:"JsExn",_1:n}}let yo={};function Dt(n){let u=yo[n];if(u!==void 0){let r=u+1|0;return yo[n]=r,n+("/"+r)}return yo[n]=1,n}function Cv(n){throw new Error("Panic! "+n)}function kv(n,u){if(n!==void 0&&u(ve(n)))return n}function My(n,u){if(n!==void 0)return u(ve(n))}function Ze(n,u){return n!==void 0?ve(n):Cv(u!==void 0?u:"Option.getExn called for None value")}function um(n,u,r){return n!==void 0?r(ve(n)):u}function tt(n,u){if(n!==void 0)return he(u(ve(n)))}function rm(n,u){if(n!==void 0)return u(ve(n))}function Ne(n,u){return n!==void 0?ve(n):u}function wr(n,u){return n!==void 0?n:u}function im(n){return n!==void 0}function Bv(n){return n===void 0}function Uv(n,u,r){return n!==void 0?u!==void 0?r(ve(n),ve(u)):!1:u===void 0}function qv(n,u,r){return n!==void 0?u!==void 0?r(ve(n),ve(u)):1:u!==void 0?-1:0}let Hv=um,Vv=Ne;function Fl(n){if(n.TAG==="Ok")return n._0;throw{RE_EXN_ID:"Not_found",Error:new Error}}function wy(n,u,r){return n.TAG==="Ok"?r(n._0):u}function Ml(n,u){return n.TAG==="Ok"?{TAG:"Ok",_0:u(n._0)}:n}function xc(n,u){return n.TAG==="Ok"?u(n._0):n}function cm(n,u){return n.TAG==="Ok"?n._0:u}function En(n){return n.TAG==="Ok"}function zy(n){return n.TAG!=="Ok"}function Lv(n,u,r){return n.TAG==="Ok"?u.TAG==="Ok"?r(n._0,u._0):!1:u.TAG!=="Ok"}function Xv(n,u,r){return n.TAG==="Ok"?u.TAG==="Ok"?r(n._0,u._0):1:u.TAG==="Ok"?-1:0}function Yv(n,u){if(n.TAG==="Ok")return u(n._0)}function Vc(n,u){return n.TAG==="Ok"?n:{TAG:"Error",_0:u(n._0)}}let Qv=wy,Zv=cm,go=Dt("Seq.InvalidArgument");function xt(){return"End"}function _n(n){return()=>({TAG:"Next",_0:n,_1:xt})}function Kv(n,u){return()=>({TAG:"Next",_0:n,_1:u})}function sm(n){let u=n();if(typeof u=="object")return[u._0,u._1]}function fm(n,u){return()=>{let r=n();return typeof r!="object"?u():{TAG:"Next",_0:r._0,_1:fm(r._1,u)}}}function Cy(n,u){return()=>{let r=n();return typeof r!="object"?"End":fm(u(r._0),Cy(r._1,u))()}}function ky(n){return()=>{let u=n();return typeof u!="object"?"End":fm(u._0,ky(u._1))()}}function Lr(n,u){return()=>{let r=n();return typeof r!="object"?"End":{TAG:"Next",_0:u(r._0),_1:Lr(r._1,u)}}}function Jv(n){let u=n();if(typeof u=="object")return he(u._0)}function Gc(n,u){for(;;){let c=sm(n);if(c===void 0)return;u(c[0]),n=c[1]}}function xu(n,u){return()=>{let r=u(n);return r!==void 0?{TAG:"Next",_0:r[0],_1:xu(r[1],u)}:"End"}}function Fv(n,u){return xu(0,r=>{if(r{if(r<=u)return[r,r+1|0]}):xu(n,r=>{if(r>=u)return[r,r-1|0]})}function bo(n,u,r){if(r.length===0)return My(wr(n,u),m=>{throw{RE_EXN_ID:go,_1:"'fromArray' was invoked with am empty array, but you provided start and/or end indexes.",Error:new Error}}),xt;let c=r.length,f=Ne(n,0),o=Ne(u,c-1|0);if(f<0||f>(c-1|0))throw{RE_EXN_ID:go,_1:"The start index "+f.toString()+" is outside the array bounds.",Error:new Error};if(o<0||o>(c-1|0))throw{RE_EXN_ID:go,_1:"The end index "+f.toString()+" is outside the array bounds.",Error:new Error};return Lr(Wv(f,o),m=>r[m])}function No(n,u){let r=(c,f)=>(()=>{if(f===0)return"End";let o=c();return typeof o!="object"?"End":{TAG:"Next",_0:o._0,_1:r(o._1,f-1|0)}});return r(n,u)}function Iv(n,u){return xu(n,c=>{for(;;){let o=sm(c);if(o===void 0)return;let m=o[1],h=u(o[0]);if(h!==void 0)return[ve(h),m];c=m}})}function Pv(n,u,r){let c={contents:u};return Gc(n,f=>{c.contents=r(c.contents,f)}),c.contents}function eA(n){return Pv(n,[],(u,r)=>(u.push(r),u))}function tA(n){return()=>{let u=sm(n);return u!==void 0?u[1]():"End"}}function dc(n,u){if(u>=0&&u=0&&u=c)return o;let h=n[o];if(!f(h,m))return o;r=o+1|0,u=h}}function qy(n,u){let r=n.length;if(r===0||r===1)return r;let c=n[0],f=n[1];if(u(c,f)){let o=f,m=2;for(;;){let h=m,y=o;if(h>=r)return h;let p=n[h];if(!u(y,p))return h;m=h+1|0,o=p}}else return u(f,c)?-sA(n,f,2,r,u)|0:1}function Nt(n){return n!==void 0?n.h:0}function al(n,u,r,c){let f=Nt(n),o=Nt(c);return{k:u,v:r,h:f>=o?f+1|0:o+1|0,l:n,r:c}}function ul(n,u){return{k:n,v:u,h:1,l:void 0,r:void 0}}function Vp(n,u){return u!==void 0?n!==void 0?n.h>=u.h:!1:!0}function fA(n,u){return n.v===u?n:{k:n.k,v:u,h:n.h,l:n.l,r:n.r}}function ta(n,u,r,c){let f=n!==void 0?n.h:0,o=c!==void 0?c.h:0;if(f>(o+2|0)){let y=n.l,p=n.r;return Nt(y)>=Nt(p)?al(y,n.k,n.v,al(p,u,r,c)):al(al(y,n.k,n.v,p.l),p.k,p.v,al(p.r,u,r,c))}if(o<=(f+2|0))return{k:u,v:r,h:f>=o?f+1|0:o+1|0,l:n,r:c};let m=c.l,h=c.r;return Nt(h)>=Nt(m)?al(al(n,u,r,m),c.k,c.v,h):al(al(n,u,r,m.l),m.k,m.v,al(m.r,c.k,c.v,h))}function oA(n){for(;;){let u=n,r=u.l;if(r===void 0)return u.k;n=r}}function mA(n){if(n!==void 0)return he(oA(n))}function dA(n){for(;;){let u=n,r=u.r;if(r===void 0)return[u.k,u.v];n=r}}function hA(n){if(n!==void 0)return dA(n)}function mm(n,u,r){let c=n.l;return c!==void 0?ta(mm(c,u,r),n.k,n.v,n.r):(u.contents=n.k,r.contents=n.v,n.r)}function jo(n,u){if(n===void 0)return;let r=jo(n.l,u),c=u(n.v),f=jo(n.r,u);return{k:n.k,v:c,h:n.h,l:r,r:f}}function Hy(n,u){for(;;){let r=n;if(r===void 0)return!0;if(!u(r.k,r.v)||!Hy(r.l,u))return!1;n=r.r}}function Vy(n,u,r){return n!==void 0?ta(Vy(n.l,u,r),n.k,n.v,n.r):ul(u,r)}function Ly(n,u,r){return n!==void 0?ta(n.l,n.k,n.v,Ly(n.r,u,r)):ul(u,r)}function Nu(n,u,r,c){if(n===void 0)return Vy(c,u,r);if(c===void 0)return Ly(n,u,r);let f=n.k,o=n.v,m=n.h,h=n.l,y=n.r,p=c.k,S=c.v,v=c.h,R=c.l,U=c.r;return m>(v+2|0)?ta(h,f,o,Nu(y,u,r,c)):v>(m+2|0)?ta(Nu(n,u,r,R),p,S,U):al(n,u,r,c)}function pA(n,u){if(n===void 0)return u;if(u===void 0)return n;let r={contents:u.k},c={contents:u.v},f=mm(u,r,c);return Nu(n,r.contents,c.contents,f)}function Lp(n,u,r,c){return r!==void 0?Nu(n,u,ve(r),c):pA(n,c)}function Nc(n){let u=n.l,r=n.r,c=u!==void 0?Nc(u):0,f=r!==void 0?Nc(r):0;return(1+c|0)+f|0}function yA(n){return n!==void 0?Nc(n):0}function Xy(n,u,r){for(;;){let c=u,f=n,o=f.l,m=f.k,h=f.r,y=o!==void 0?Xy(o,c,r):c;r[y]=[m,f.v];let p=y+1|0;if(h===void 0)return p;u=p,n=h}}function gA(n){if(n===void 0)return[];let u=Nc(n),r=new Array(u);return Xy(n,0,r),r}function Oo(n,u,r){switch(r){case 0:return;case 1:let c=n[u];return ul(c[0],c[1]);case 2:let f=n[u],m=n[u-1|0],h=f;return{k:m[0],v:m[1],h:2,l:ul(h[0],h[1]),r:void 0};case 3:let y=n[u],p=n[u-1|0],v=n[u-2|0],R=p,U=y;return{k:R[0],v:R[1],h:2,l:ul(U[0],U[1]),r:ul(v[0],v[1])};default:let X=r/2|0,_=Oo(n,u,X),O=n[u-X|0],G=Oo(n,(u-X|0)-1|0,(r-X|0)-1|0);return al(_,O[0],O[1],G)}}function Ro(n,u,r){switch(r){case 0:return;case 1:let c=n[u];return ul(c[0],c[1]);case 2:let f=n[u],m=n[u+1|0],h=f;return{k:m[0],v:m[1],h:2,l:ul(h[0],h[1]),r:void 0};case 3:let y=n[u],p=n[u+1|0],v=n[u+2|0],R=p,U=y;return{k:R[0],v:R[1],h:2,l:ul(U[0],U[1]),r:ul(v[0],v[1])};default:let X=r/2|0,_=Ro(n,u,X),O=n[u+X|0],G=Ro(n,(u+X|0)+1|0,(r-X|0)-1|0);return al(_,O[0],O[1],G)}}function dm(n){let u=n.l;n.l=u.r,u.r=n;let r=Nt(n.l),c=Nt(n.r);n.h=Ot(r,c)+1|0;let f=Nt(u.l),o=n.h;return u.h=Ot(f,o)+1|0,u}function hm(n){let u=n.r;n.r=u.l,u.l=n;let r=Nt(n.l),c=Nt(n.r);n.h=Ot(r,c)+1|0;let f=Nt(u.r),o=n.h;return u.h=Ot(f,o)+1|0,u}function bA(n){let u=n.l,r=hm(u);return n.l=r,dm(n)}function vA(n){let u=n.r,r=dm(u);return n.r=r,hm(n)}function fc(n){let u=Nt(n.l),r=Nt(n.r);return n.h=Ot(u,r)+1|0,n}function AA(n){let u=n.l,r=n.r,c=Nt(u),f=Nt(r);if(c>(2+f|0)){let o=u.l,m=u.r;return Vp(o,m)?fc(dm(n)):fc(bA(n))}if(f>(2+c|0)){let o=r.l,m=r.r;return Vp(m,o)?fc(hm(n)):fc(vA(n))}return n.h=Ot(c,f)+1|0,n}function _A(n,u){for(;;){let r=n;if(r===void 0)return;let c=r.k;if(u===c)return he(r.v);n=u=(u!==void 0?u.h:0)){let y=n.k,p=n.v,S=n.l,v=n.r,R=Xp(y,u);return Lp(Or(S,R[0],r),y,r(y,he(p),R[1]),Or(v,R[2],r))}}else if(u===void 0)return;let c=u.k,f=u.v,o=u.l,m=u.r,h=Xp(c,n);return Lp(Or(h[0],o,r),c,r(c,h[1],he(f)),Or(h[2],m,r))}function $o(n,u,r){if(n===void 0)return ul(u,r);let c=n.k;if(u===c)return n.k=u,n.v=r,n;let f=n.l,o=n.r;if(uf[0]=0?c=Ro(n,0,r):(r=-r|0,c=Oo(n,r-1|0,r));for(let f=r;fu||n===n?1:u===u?-1:0}function Qy(n,u){return n===u?0:n{let v=p[2],R=p[1];if(!(!Object.prototype.hasOwnProperty.call(R,S)||Na(p[0][S],R[S])>0))return;let U=v.contents;if(!(U!==void 0&&S>=U)){v.contents=S;return}},o=p=>f([n,u,c],p),m=p=>f([u,n,r],p);Oc(n,o),Oc(u,m);let h=r.contents,y=c.contents;return h!==void 0?y!==void 0?Qy(h,y):-1:y!==void 0?1:0}function Me(n,u){if(n===u)return!0;let r=typeof n;if(r==="string"||r==="number"||r==="bigint"||r==="boolean"||r==="undefined"||n===null)return!1;let c=typeof u;if(r==="function"||c==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(c==="number"||c==="bigint"||c==="undefined"||u===null)return!1;let f=n.TAG,o=u.TAG;if(f!==o)return!1;let m=n.length|0,h=u.length|0;if(m===h)if(Array.isArray(n)){let y=0;for(;;){let p=y;if(p===m)return!0;if(!Me(n[p],u[p]))return!1;y=p+1|0}}else{if(n instanceof Date&&u instanceof Date)return!(n>u||n{if(!Object.prototype.hasOwnProperty.call(u,v)){y.contents=!1;return}},S=v=>{if(!Object.prototype.hasOwnProperty.call(n,v)||!Me(u[v],n[v])){y.contents=!1;return}};return Oc(n,p),y.contents&&Oc(u,S),y.contents}}else return!1}function Xc(n,u){return(typeof n=="number"||typeof n=="bigint")&&(typeof u=="number"||typeof u=="bigint")?n!==u:!Me(n,u)}function zr(n,u){let r=new Map;return n.forEach((c,f)=>{r.set(f,u(c))}),r}function jA(n){return"["+n.toString()+"]"}function OA(n,u,r){let c=o=>o.toString(),f=r!==void 0?r:o=>o.toString();return jA(Array.from(n.entries()).map(o=>[c(o[0]),f(o[1])]))}function gm(n,u){let r=u[n];return"$"+(r!==void 0&&u.indexOf(r)===n?r:"\\".concat(String(n)))}function Zy(n,u,r){let c=u.map(f=>gm(f,r)).join(" ");return"?"+n.toString()+"("+c+")"}function RA(n,u,r){let c=(f,o)=>{let m=new Map;return f.forEach((h,y)=>{let p=o.get(y);if(p!==void 0){m.set(y,r(h,ve(p)));return}}),m};return n.size{let m=u.get(o);m!==void 0?c.set(o,r(f,ve(m))):c.set(o,f)}),u.forEach((f,o)=>{if(c.get(o)===void 0){c.set(o,f);return}}),c}function DA(n,u){return Ky(n,u,(r,c)=>r)}function $A(n,u){return RA(n,u,(r,c)=>[r,c])}let bm=((n,u)=>({...n,key:u}));function MA(n,u){return n.size===n.size?Array.from($A(n,u).values()).filter(r=>Me(r[0],r[1])).length===u.size:!1}function wA(n,u){return new Map($a(Array.from(n.entries(),r=>{let c=r[0];return tt(u(c,r[1]),f=>[c,f])})))}function zA(n,u,r,c){n.set(u,Ne(tt(n.get(u),r),c))}function CA(n){return new Map(n.entries())}let Jy={filterMap:wA,update:zA,clone:CA};function Fy(n,u){return tt(am(n.exec(u)),r=>[r.slice(1),r[0].length])}function $r(n,u){return n.flatMap((r,c)=>c===0?[r]:[u,r])}function Rc(n,u,r){return n.toSpliced(u,1,r)}let Cr=Dt("Util.Unreachable");function Kp(n,u){let r=n.findIndex(u);if(r!==-1)return r;throw{RE_EXN_ID:Cr,_1:"Element not found",Error:new Error}}function kA(n){if(n.TAG==="Ok")return he(n._0)}function BA(n,u){return n.TAG==="Ok"?n:u()}let Wy={getExn:Fl,mapOr:wy,mapWithDefault:Qv,map:Ml,flatMap:xc,getOr:cm,getWithDefault:Zv,isOk:En,isError:zy,equal:Lv,compare:Xv,forEach:Yv,mapError:Vc,ok:kA,or:BA};function UA(n,u){return n!==void 0?ve(n):u()}function qA(n){let u=$a(n);if(n.length===u.length)return u}let Et={filter:kv,forEach:My,getExn:Ze,mapOr:um,mapWithDefault:Hv,map:tt,flatMap:rm,getOr:Ne,getWithDefault:Vv,orElse:wr,isSome:im,isNone:Bv,equal:Uv,compare:qv,getOrElse:UA,sequence:qA},HA=((n,u=0)=>{let r=3735928559^u,c=1103547991^u;for(let f=0,o;f>>16,2246822507),r^=Math.imul(c^c>>>13,3266489909),c=Math.imul(c^c>>>16,2246822507),c^=Math.imul(r^r>>>13,3266489909),4294967296*(2097151&c)+(r>>>0)}),VA={cyrb53:HA},zt=` +`,LA="([a-zA-Z][a-zA-Z\\d]*)";function wl(n,u){let r=parseInt(n);if(!(isNaN(r)||r>2147483647||r<-2147483648))return r|0}function XA(n,u){let r=n.lastIndexOf(u);if(r!==-1)return r}function YA(n){let u=n.expects,r=u.length,c;if(r!==1)if(r!==0){let o=n.expects.length;c="expected "+n.expects.slice(0,o-1|0).join(", ")+", or "+n.expects[o-1|0]}else c=void 0;else c="expected "+u[0];let f=n.msg;return f!==void 0?c!==void 0?"parse failed: "+f+` + `+c:"parse failed: "+f:c!==void 0?"parse failed: "+c:"parse failed"}let QA={pos:{line:1,col:1,idx:0}};function vm(n,u){return Vc(Ml(n(u,QA),r=>[r[0],u.slice(r[1].pos.idx)]),r=>"around "+u.slice(r.pos.idx,r.pos.idx+5|0)+`: +`+YA(r.info))}function dt(n,u){return(r,c)=>Ml(n(r,c),f=>[u(f[0]),f[1]])}function ZA(n,u){return(r,c)=>Vc(n(r,c),u)}function ea(n,u){return ZA(n,r=>{let c={...r.info};return{info:(c.expects=[u],c),pos:r.pos}})}function gt(n,u){return(r,c)=>xc(n(r,c),f=>u(f[0])(r,f[1]))}function Iy(n,u){return gt(n,r=>u)}function Py(n,u){return gt(n,r=>dt(u,c=>r))}function KA(n){return(u,r)=>({TAG:"Error",_0:{info:{msg:n,expects:[]},pos:r.pos}})}function Am(n,u){return(r,c)=>({TAG:"Error",_0:{info:{msg:u,expects:n},pos:c.pos}})}function _m(n,u){return(r,c)=>{let f=n(r,c);if(f.TAG==="Ok")return{TAG:"Ok",_0:f._0};let o=f._0;return Vc(u(r,c),m=>({info:{expects:o.info.expects.concat(m.info.expects)},pos:m.pos}))}}function JA(n){return _m(dt(n,u=>he(u)),(u,r)=>({TAG:"Ok",_0:[void 0,r]}))}function e1(n){return qe(n,(u,r)=>({TAG:"Error",_0:{info:{msg:"no matches",expects:[]},pos:r.pos}}),_m)}function FA(n,u){return{TAG:"Ok",_0:[u,u]}}function WA(n){return gt(FA,u=>{let r=n(u);return(c,f)=>({TAG:"Ok",_0:[void 0,r]})})}function Yc(n,u){return{TAG:"Ok",_0:[n.slice(u.pos.idx),u]}}function t1(n){let u={contents:(r,c)=>({TAG:"Error",_0:{info:{msg:"umm",expects:[]},pos:c.pos}})};return u.contents=n((r,c)=>u.contents(r,c)),u.contents}function Sm(n){return dt(t1(u=>gt(JA(n),r=>{if(r===void 0)return(f,o)=>({TAG:"Ok",_0:[0,o]});let c=ve(r);return dt(u,f=>Dv(f,c))})),wv)}function Qc(n,u,r){return Py(gt(u,c=>n),r)}function Tm(n){return gt(Yc,u=>{if(u.length({TAG:"Error",_0:{info:{msg:"tried to consume too much",expects:[]},pos:y.pos}});let r=u.slice(0,n),c=r.split(` +`).length-1|0,f=r.length-Ne(XA(r,` +`),0)|0,o=(h,y)=>({TAG:"Ok",_0:[r,y]}),m=WA(h=>({pos:{line:h.pos.line+c|0,col:c>0?f:h.pos.col+f|0,idx:h.pos.idx+n|0}}));return gt(m,h=>o)})}function IA(n,u){return tt(am(n.exec(u)),r=>[r.slice(1),r[0].length])}function Mr(n){return gt(Yc,u=>{if(!u.startsWith(n))return Am(['"'+n+'"'],void 0);let r=(f,o)=>({TAG:"Ok",_0:[n,o]}),c=Tm(n.length);return gt(c,f=>r)})}function Em(n){let u=n.source,r=u.startsWith("^")?n:new RegExp("^"+u,n.flags);return gt(Yc,c=>{let f=IA(r,c);if(f===void 0)return Am(["regex pattern "+n.source],void 0);let o=f[0],m=(y,p)=>({TAG:"Ok",_0:[o,p]}),h=Tm(f[1]);return gt(h,y=>m)})}function l1(n){return gt(Em(n),u=>{if(u.length!==1)return(c,f)=>({TAG:"Error",_0:{info:{msg:"more than one match",expects:[]},pos:f.pos}});let r=u[0];return(c,f)=>({TAG:"Ok",_0:[r,f]})})}function Ra(n){let u=Em(/^\s*/);return Py(n,dt(u,r=>{}))}function ja(n){return Ra(Mr(n))}let xm=dt(l1(/(\d+)/),n=>Ze(wl(n),void 0)),PA=Em(/\s*/),e_=dt(PA,n=>{});function t_(n){return gt(Yc,u=>{let r=n(u);if(r.TAG!=="Ok")return KA(r._0);let c=r._0,f=c[0],o=u.length-c[1].length|0;return dt(Tm(o),m=>f)})}function n1(n,u,r){return t_(c=>n(c,u,r))}let l_=Mr("\\"),a1=Ra(gt(l_,n=>xm)),u1=Ra(l1(/([^\s\(\)]+)/));function r1(n){return _m(a1,gt(u1,u=>{let r=Oy(n,u);return r!==void 0?(c,f)=>({TAG:"Ok",_0:[r,f]}):Am(["in-scope variable"],void 0)}))}function n_(n){let u=Mr("?");return gt(gt(u,r=>xm),r=>dt(Qc(Sm(r1(n)),Ra(Mr("(")),Ra(Mr(")"))),c=>[r,c]))}let Dc={varLit:a1,ident:u1,varIdx:r1,schemaLit:n_};function Zc(n){let u=Dt("AtomBase.Make(T).Tag");return{Tag:u,wrap:c=>({TAG:"AnyValue",_0:{RE_EXN_ID:u},_1:c})}}let i1=Dt("AtomBase.Make(T).Tag");function a_(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:i1},_1:n}}let Xr={Tag:i1,wrap:a_},c1=Dt("AtomBase.Make(T).Tag");function u_(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:c1},_1:n}}let $c={Tag:c1,wrap:u_};function Tt(n,u,r){let c=n!==void 0?n.h:0,f=r!==void 0?r.h:0;return{v:u,h:(c>=f?c:f)+1|0,l:n,r}}function jt(n){return{v:n,h:1,l:void 0,r:void 0}}function Mc(n,u){return u!==void 0?n!==void 0?n.h>=u.h:!1:!0}function Xt(n,u,r){let c=n!==void 0?n.h:0,f=r!==void 0?r.h:0;if(c>(f+2|0)){let h=n.l,y=n.r;return Mc(h,y)?Tt(h,n.v,Tt(y,u,r)):Tt(Tt(h,n.v,y.l),y.v,Tt(y.r,u,r))}if(f<=(c+2|0))return{v:u,h:(c>=f?c:f)+1|0,l:n,r};let o=r.l,m=r.r;return Mc(m,o)?Tt(Tt(n,u,o),r.v,m):Tt(Tt(n,u,o.l),o.v,Tt(o.r,r.v,m))}function s1(n,u){let r=n.l;return r!==void 0?Xt(s1(r,u),n.v,n.r):(u.contents=n.v,n.r)}function f1(n,u){return n!==void 0?Xt(f1(n.l,u),n.v,n.r):jt(u)}function o1(n,u){return n!==void 0?Xt(n.l,n.v,o1(n.r,u)):jt(u)}function Wl(n,u,r){if(n===void 0)return f1(r,u);if(r===void 0)return o1(n,u);let c=n.h,f=r.h;return c>(f+2|0)?Xt(n.l,n.v,Wl(n.r,u,r)):f>(c+2|0)?Xt(Wl(n,u,r.l),r.v,r.r):Tt(n,u,r)}function wo(n){let u=n.l,r=n.r,c=u!==void 0?wo(u):0,f=r!==void 0?wo(r):0;return(1+c|0)+f|0}function m1(n,u,r){for(;;){let c=u,f=n,o=f.v,m=f.l,h=f.r,y=m!==void 0?m1(m,c,r):c;r[y]=o;let p=y+1|0;if(h===void 0)return p;u=p,n=h}}function r_(n){if(n===void 0)return[];let u=wo(n),r=new Array(u);return m1(n,0,r),r}function kr(n,u,r){switch(r){case 0:return;case 1:return jt(n[u]);case 2:let c=n[u];return{v:n[u-1|0],h:2,l:jt(c),r:void 0};case 3:let o=n[u],m=n[u-1|0],h=n[u-2|0];return{v:m,h:2,l:jt(o),r:jt(h)};default:let y=r/2|0,p=kr(n,u,y),S=n[u-y|0],v=kr(n,(u-y|0)-1|0,(r-y|0)-1|0);return Tt(p,S,v)}}function Br(n,u,r){switch(r){case 0:return;case 1:return jt(n[u]);case 2:let c=n[u];return{v:n[u+1|0],h:2,l:jt(c),r:void 0};case 3:let o=n[u],m=n[u+1|0],h=n[u+2|0];return{v:m,h:2,l:jt(o),r:jt(h)};default:let y=r/2|0,p=Br(n,u,y),S=n[u+y|0],v=Br(n,(u+y|0)+1|0,(r-y|0)-1|0);return Tt(p,S,v)}}function i_(n,u,r){for(;;){let c=n;if(c===void 0)return!1;let f=c.v,o=r(u,f);if(o===0)return!0;n=o<0?c.l:c.r}}function hc(n,u,r){for(;;){let c=u,f=n;if(f===void 0)return!0;if(c===void 0)return!1;let o=f.v,m=f.l,h=f.r,y=c.v,p=c.l,S=c.r,v=r(o,y);if(v===0){if(!hc(m,p,r))return!1;u=S,n=h;continue}if(v<0){if(!hc(Tt(m,o,void 0),p,r))return!1;n=h;continue}if(!hc(Tt(void 0,o,h),S,r))return!1;n=m}}function Gm(n){let u=n.l;n.l=u.r,u.r=n;let r=n.l,c=r!==void 0?r.h:0,f=n.r,o=f!==void 0?f.h:0;n.h=Ot(c,o)+1|0;let m=u.l,h=m!==void 0?m.h:0,y=n.h;return u.h=Ot(h,y)+1|0,u}function Nm(n){let u=n.r;n.r=u.l,u.l=n;let r=n.l,c=r!==void 0?r.h:0,f=n.r,o=f!==void 0?f.h:0;n.h=Ot(c,o)+1|0;let m=u.r,h=m!==void 0?m.h:0,y=n.h;return u.h=Ot(h,y)+1|0,u}function c_(n){let u=n.l,r=Nm(u);return n.l=r,Gm(n)}function s_(n){let u=n.r,r=Gm(u);return n.r=r,Nm(n)}function oc(n){let u=n.l,r=u!==void 0?u.h:0,c=n.r,f=c!==void 0?c.h:0;return n.h=Ot(r,f)+1|0,n}function jm(n){let u=n.l,r=n.r,c=u!==void 0?u.h:0,f=r!==void 0?r.h:0;if(c>(2+f|0)){let o=u.l,m=u.r;return Mc(o,m)?oc(Gm(n)):oc(c_(n))}if(f>(2+c|0)){let o=r.l,m=r.r;return Mc(m,o)?oc(Nm(n)):oc(s_(n))}return n.h=Ot(c,f)+1|0,n}function zo(n,u,r){if(u===void 0)return jt(r);let c=u.v,f=n(r,c);if(f===0)return u;let o=u.l,m=u.r;if(f<0){let h=zo(n,o,r);u.l=h}else u.r=zo(n,m,r);return jm(u)}function f_(n,u){let r=n.length;if(r===0)return;let c=qy(n,(o,m)=>u(o,m)<0),f;c>=0?f=Br(n,0,c):(c=-c|0,f=kr(n,c-1|0,c));for(let o=c;o=f){if(f===1)return Ur(n,u.v,r);let p=n.v,S=n.l,v=n.r,R=wc(r,u,p);return Wl(Rr(S,R[0],r),p,Rr(v,R[1],r))}if(c===1)return Ur(u,n.v,r);let o=u.v,m=u.l,h=u.r,y=wc(r,n,o);return Wl(Rr(y[0],m,r),o,Rr(y[1],h,r))}let o_=f_,m_=i_,d_=hc;function Co(n,u){let r=u.cmp;return{cmp:r,data:o_(n,r)}}function zc(n,u){let r=n.data,c=n.cmp,f=Ur(r,u,c);return f===r?n:{cmp:c,data:f}}function ko(n,u){let r=n.cmp;return{cmp:r,data:Rr(n.data,u.data,r)}}function Bo(n,u){let r=n.cmp;return d_(n.data,u.data,r)}function Jl(n){return{cmp:n.cmp,data:void 0}}function Cc(n,u){return m_(n.data,u,n.cmp)}function Au(n,u){let r=!1;for(;!r;){let c=n.next();u(c.value),r=c.done}}let qr=Dt("SExp.SubstNotCompatible"),h_=Na,Wn={cmp:h_};function p_(n){let u=(C,M)=>{},r=()=>new Map,c=Me,f=C=>{switch(C.TAG){case"Atom":return{TAG:"Atom",_0:n.reduce(C._0)};case"Compound":return{TAG:"Compound",subexps:C.subexps.map(f)};case"Var":case"Schematic":return C}},o=C=>{switch(C.TAG){case"Compound":return qe(C.subexps,Jl(Wn),(M,A)=>ko(M,o(A)));case"Atom":case"Var":return Jl(Wn);case"Schematic":return zc(Jl(Wn),C.schematic)}},m=C=>{switch(C.TAG){case"Compound":return qe(C.subexps,Jl(Wn),(M,A)=>ko(M,m(A)));case"Var":return zc(Jl(Wn),C.idx);case"Atom":case"Schematic":return Jl(Wn)}},h=(C,M)=>{switch(C.TAG){case"Atom":let A=new Map(yt(Array.from(M.entries()),Y=>{let P=Y[1];if(P.TAG==="Atom")return[Y[0],P._0]}));return{TAG:"Atom",_0:n.substitute(C._0,A)};case"Compound":return{TAG:"Compound",subexps:C.subexps.map(Y=>h(Y,M))};case"Var":return C;case"Schematic":let z=M.get(C.schematic);return z!==void 0?z:C}},y=(C,M)=>{let A=new Map;return Au(C.entries(),z=>{if(z!==void 0){A.set(z[0],h(z[1],M));return}}),Au(M.entries(),z=>{if(z!==void 0){A.set(z[0],h(z[1],C));return}}),A},p=new Map,S=(C,M)=>{let A=new Map;return A.set(C,M),A},v=(C,M)=>{switch(C.TAG){case"Atom":switch(M.TAG){case"Atom":return Lr(n.unify(C._0,M._0,void 0),re=>zr(re,x=>({TAG:"Atom",_0:x})));case"Compound":case"Var":return xt}break;case"Compound":let z=C.subexps;switch(M.TAG){case"Compound":let re=M.subexps;return z.length===re.length?R(Lc(z,re)):xt;case"Atom":case"Var":return xt}break;case"Var":switch(M.TAG){case"Atom":case"Compound":return xt;case"Var":return C.idx===M.idx?_n(p):xt}break;case"Schematic":let Y=C.schematic,P=0;if(M.TAG==="Schematic"){if(Y===M.schematic)return _n(p);P=2}else P=2;if(P===2&&!Cc(o(M),Y)&&Bo(m(M),Co(C.allowed,Wn)))return _n(S(Y,M));break}if(M.TAG!=="Schematic")return xt;let A=M.schematic;return!Cc(o(C),A)&&Bo(m(C),Co(M.allowed,Wn))?_n(S(A,C)):xt},R=C=>{if(C.length===0)return _n(p);let M=C[0];return Cy(v(M[0],M[1]),A=>Iv(R(yt(C.slice(1),z=>{try{return[h(z[0],A),h(z[1],A)]}catch(Y){let P=la(Y);if(P.RE_EXN_ID===qr)return;throw P}})),z=>{try{return y(A,z)}catch(Y){let P=la(Y);if(P.RE_EXN_ID===qr)return;throw P}}))},U=(C,M,A)=>v(C,M),X=C=>{for(;;){let M=C;switch(M.TAG){case"Atom":return he(M._0);case"Compound":let A=M.subexps;if(A.length!==1)return;C=A[0];continue;case"Var":return n.coerce($c.wrap({TAG:"Var",idx:M.idx}));case"Schematic":return n.coerce($c.wrap({TAG:"Schematic",schematic:M.schematic,allowed:M.allowed}))}}},_=(C,M,A)=>{let z=A!==void 0?A:0;switch(C.TAG){case"Atom":return{TAG:"Atom",_0:n.substDeBruijn(C._0,M.map(X),z)};case"Compound":return{TAG:"Compound",subexps:C.subexps.map(P=>_(P,M,z))};case"Var":let Y=C.idx;return Y=0?M[Y-z|0]:{TAG:"Var",idx:Y-M.length|0};case"Schematic":return{TAG:"Schematic",schematic:C.schematic,allowed:yt(C.allowed,P=>{if(!(P<(z+M.length|0)))return P-(z+M.length|0)|0})}}},O=(C,M,A)=>{let z=A!==void 0?A:0;switch(C.TAG){case"Atom":return{TAG:"Atom",_0:n.upshift(C._0,M,z)};case"Compound":return{TAG:"Compound",subexps:C.subexps.map(P=>O(P,M,z))};case"Var":let Y=C.idx;return{TAG:"Var",idx:Y>=z?Y+M|0:Y};case"Schematic":return{TAG:"Schematic",schematic:C.schematic,allowed:C.allowed.map(P=>P>=z?P+M|0:P)}}},G=(C,M)=>({TAG:"Schematic",schematic:C,allowed:Ga(M.length,A=>A)}),T=(C,M)=>{if(M>=C.contents){C.contents=M+1|0;return}},j=(C,M)=>{let A=C.contents;return C.contents=C.contents+1|0,A},N=(C,M)=>{let A=M[C];return A!==void 0&&M.indexOf(A)===C?A:"\\".concat(String(C))},B=()=>({contents:0}),J=(C,M,A)=>{switch(C.TAG){case"Atom":return n.prettyPrint(C._0,A);case"Compound":return"(".concat(C.subexps.map(z=>J(z,M,A)).join(" ")).concat(")");case"Var":return N(C.idx,A);case"Schematic":return"?".concat(String(C.schematic)).concat("(").concat(C.allowed.map(z=>N(z,A)).join(" ")).concat(")")}},k=(C,M)=>{let A={contents:C};return M.map(z=>{let P=(re=>{for(;;){let x=re;if(!A.contents.some(V=>V===x))return x;re=x+"'"}})(z);return A.contents=A.contents.concat([P]),P})},E=C=>C.concat("."),D=C=>{let M=new RegExp("^([^\\s.\\[\\]()]+)\\.","y"),A=M.exec(C.trim());if(A==null)return{TAG:"Error",_0:"not a meta name"};let z=A.slice(1);return z.length!==1?{TAG:"Error",_0:"impossible happened"}:{TAG:"Ok",_0:[z[0],C.trim().slice(M.lastIndex)]}},$=(C,M)=>{let A=Dc.varIdx(C),z=dt(A,re=>({TAG:"Var",idx:re})),Y=dt(Dc.schemaLit(C),re=>{let x=re[1];return tt(M,V=>{x.forEach(ee=>T(V,ee))}),{TAG:"Schematic",schematic:re[0],allowed:x}}),P=t1(re=>Ra(e1([ea(Y,"schematic"),ea(z,"variable"),ea(dt(n1(n.parse,C,M),x=>({TAG:"Atom",_0:x})),"atom"),dt(Qc(Sm(re),ea(ja("("),"open expression"),ea(ja(")"),"close expression")),x=>({TAG:"Compound",subexps:x}))])));return Iy(e_,P)},Q=(C,M,A,z)=>vm($(A,z),C),W=C=>{switch(C.TAG){case"Atom":return n.concrete(C._0);case"Compound":return C.subexps.some(W);case"Var":case"Schematic":return!1}};return{mapSubst:zr,mergeSubsts:DA,substEqual:MA,substitute:h,unify:U,makeSubst:r,equivalent:c,substDeBruijn:_,reduce:f,upshift:O,fresh:j,seen:T,place:G,makeGen:B,emptyGrammar:void 0,combineGrammars:u,parse:Q,prettyPrint:J,freshenMetas:k,parseMeta:D,prettyPrintMeta:E,concrete:W,mapTerms:(C,M)=>M(C)}}let y_=/^\s*/,g_=/^[^\s.()\[\]][^\s.()\[\]]*/;function vu(n,u){return n.charAt(u)}function Kl(n,u){return n.slice(u)}function Lt(n){let u=y_.exec(n);if(u==null)return n;let r=u[0];if(r===void 0)return n;let c=ve(r);return c!==void 0?n.slice(c.length):n}function Sn(n){let u=Lt(n),r=g_.exec(u);if(r==null)return;let c=r[0];if(c===void 0)return;let f=ve(c);if(f!==void 0)return[f,u.slice(f.length)]}function b_(n){if(n!==void 0)return ve(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function v_(n){return n!==void 0}let A_=b_;function __(n,u,r,c){for(;;){let f=r,o=u;if(f>=c)return f;let m=n[f];if(o<=m)return f;r=f+1|0,u=m}}function S_(n){let u=n.length;if(u===0||u===1)return u;let r=n[0],c=n[1];if(r=u)return m;let y=n[m];if(h>=y)return m;o=m+1|0,f=y}}else return r>c?-__(n,c,2,u)|0:1}function T_(n,u){for(;;){let r=n;if(r===void 0)return!1;let c=r.v;if(u===c)return!0;n=u=0?c=Br(n,0,r):(r=-r|0,c=kr(n,r-1|0,r));for(let f=r;fn.parseLeaf(R,v.reserved,U,X,(_,O,G)=>p(v,_,O,G)),r=(v,R,U,X)=>{let _=u(v,R,U,X);if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let O=_._0;return c(v,O[0],O[1],U,X)},c=(v,R,U,X,_)=>{for(;;){let O=U,G=R,T=u(v,O,X,_);if(T.TAG!=="Ok")return{TAG:"Ok",_0:[G,O]};let j=T._0;U=j[1],R=n.mkApp(G,j[0])}},f=(v,R,U,X,_)=>{let O=o(v,R,U,X,_);if(O.TAG!=="Ok")return{TAG:"Error",_0:O._0};let G=O._0;return m(v,R,G[0],G[1],X,_)},o=(v,R,U,X,_)=>{let O=v.ops.filter(N=>N.category===R?Ne(tt(N.parts[0],B=>B.TAG==="Lit"),!1):!1),G=h(v,O,void 0,U,X,_);if(G!==void 0)return G;let T=v.immediateTighter[R];if(T===void 0)return r(v,U,X,_);let j=0;for(;;){let N=j,B=dc(T,N);if(B===void 0)return{TAG:"Error",_0:"expected a term (category "+R+")"};let J=f(v,B,U,X,_);if(J.TAG==="Ok")return J;j=N+1|0}},m=(v,R,U,X,_,O)=>{for(;;){let G=X,T=U,j=v.ops.filter(D=>D.category===R?Ne(tt(D.parts[0],$=>$.TAG!=="Lit"),!1):!1),N=h(v,j,he(T),G,_,O);if(N===void 0)return{TAG:"Ok",_0:[T,G]};if(N.TAG!=="Ok")return N;let B=N._0,J=B[1],k=B[0];if(j.some(D=>D.assoc==="NonAssoc"))return{TAG:"Ok",_0:[k,J]};X=J,U=k}},h=(v,R,U,X,_,O)=>{let G=im(U)?1:0,T=Ne(tt(U,N=>[N]),[]),j=0;for(;;){let N=j,B=dc(R,N);if(B===void 0)return;let J=y(v,B,G,G,X,T,_,O);if(J!==void 0){if(J.TAG!=="Ok")return J;let k=J._0,E=n.mkOpHead(B.name);return{TAG:"Ok",_0:[qe(k[0],E,(D,$)=>n.mkApp(D,$)),k[1]]}}j=N+1|0}},y=(v,R,U,X,_,O,G,T)=>{for(;;){let j=O,N=_,B=U,J=dc(R.parts,B);if(J===void 0)return{TAG:"Ok",_0:[j,N]};if(J.TAG==="Lit"){let $=J._0,Q=Lt(N),W=Sn(Q);if(W!==void 0&&W[0]===$){_=W[1],U=B+1|0;continue}return B===X?void 0:{TAG:"Error",_0:'expected "'+$+'"'}}let k=B===(R.parts.length-1|0),E=J._0==="Self"&&k&&R.assoc==="Right"?f(v,R.category,N,G,T):o(v,R.category,N,G,T);if(E.TAG!=="Ok")return{TAG:"Error",_0:E._0};let D=E._0;O=j.concat([D[0]]),_=D[1],U=B+1|0}},p=(v,R,U,X)=>{let _=yt(v.roots,G=>{let T=f(v,G,R,U,X);if(T.TAG==="Ok")return[T,T._0[1].length]}),O=r(v,R,U,X);return _.length!==0?qe(_,Ul(_,0),(G,T)=>{let j=T[1],N=G[1];return ju(R,v,U,X)}}function O_(n,u,r,c){for(;;){let f=r,o=u;if(f>=c)return f;let m=n[f];if(o<=m)return f;r=f+1|0,u=m}}function R_(n){let u=n.length;if(u===0||u===1)return u;let r=n[0],c=n[1];if(r=u)return m;let y=n[m];if(h>=y)return m;o=m+1|0,f=y}}else return r>c?-O_(n,c,2,u)|0:1}function D_(n,u){for(;;){let r=n;if(r===void 0)return!1;let c=r.v;if(u===c)return!0;n=u=0?c=Br(n,0,r):(r=-r|0,c=kr(n,r-1|0,r));for(let f=r;f=c){if(c===1)return Da(n,u.v);let y=n.v,p=n.l,S=n.r,v=Bc(u,y);return Wl(Ea(p,v[0]),y,Ea(S,v[1]))}if(r===1)return Da(u,n.v);let f=u.v,o=u.l,m=u.r,h=Bc(n,f);return Wl(Ea(h[0],o),f,Ea(h[1],m))}let Oa=$_,ql=D_,M_=r_,w_=[],z_=[],C_=[],k_={categories:w_,tighterThan:z_,ops:C_};function B_(n,u){return{categories:n.categories.concat(u.categories),tighterThan:n.tighterThan.concat(u.tighterThan),ops:n.ops.concat(u.ops)}}function d1(n,u,r){let c=r!==void 0?r:"NonAssoc",f=u.split("_"),o=[];f.forEach((h,y)=>{if(y>0&&o.push({TAG:"Hole",_0:"Tighter"}),h!==""){o.push({TAG:"Lit",_0:h});return}});let m;switch(c){case"Right":let h=o.length;m=o.map((y,p)=>p===(h-1|0)?{TAG:"Hole",_0:"Self"}:y);break;case"Left":case"NonAssoc":m=o;break}return{categories:[n],tighterThan:[],ops:[{category:n,parts:m,assoc:c,name:u}]}}function U_(n,u){return{categories:[n,u],tighterThan:[[n,u]],ops:[]}}function h1(n){let u={};n.tighterThan.forEach(p=>{let S=p[1],v=Ne(u[S],[]);u[S]=v.concat([p[0]])});let r=(p,S,v)=>{if(ql(S,p))return!0;if(ql(v,p))return!1;let R=Da(S,p);return Ne(u[p],[]).some(U=>r(U,R,v))},c=qe(n.categories,[],(p,S)=>p.includes(S)?p:p.concat([S]));if(c.some(p=>r(p,void 0,void 0)))return{TAG:"Error",_0:"tighterThan relation contains a cycle"};let o=Oa(n.tighterThan.map(p=>p[0])),m=c.filter(p=>!ql(o,p)),h=Oa(n.ops.flatMap(p=>yt(p.parts,S=>{if(S.TAG==="Lit")return S._0}))),y={};return n.ops.forEach(p=>{y[p.name]=p}),{TAG:"Ok",_0:{ops:n.ops,byName:y,immediateTighter:u,reserved:h,roots:m}}}function q_(n,u){let r=Oa(n.ops.map(R=>R.name)),c=u.ops.filter(R=>!ql(r,R.name)),f=n.ops.concat(c),o=Object.assign({},n.byName);Object.entries(u.byName).forEach(R=>{o[R[0]]=R[1]});let m=Ea(n.reserved,u.reserved),h=Object.assign({},n.immediateTighter),y=(R,U)=>{let X=[R],_;for(;;){let O=_,G=X;if(G.some(j=>j===U))return!0;let T=G.flatMap(j=>Ne(h[j],[])).filter(j=>!ql(O,j));if(T.length===0)return!1;_=qe(T,O,Da),X=T}};Object.entries(u.immediateTighter).forEach(R=>{let U=R[0];R[1].forEach(X=>{if(y(U,X))return;let _=Ne(h[U],[]);h[U]=_.concat([X])})});let p=Oa(Object.entries(h).flatMap(R=>R[1])),v=qe(f.map(R=>R.category).concat(Object.entries(h).flatMap(R=>[R[0]].concat(R[1]))),[],(R,U)=>R.includes(U)?R:R.concat([U])).filter(R=>!ql(p,R));return{ops:f,byName:o,immediateTighter:h,reserved:m,roots:v}}let H_=[],V_={},L_={},X_=[],Y_={ops:H_,byName:V_,immediateTighter:L_,reserved:void 0,roots:X_},Q_=/^(infixl|infixr|infix|mixfix)\b/,Z_=/^[^\s.()\[\]][^\s.()\[\]]*/;function K_(n){let u=Lt(n),r=Z_.exec(u);if(r==null)return;let c=r[0];if(c===void 0)return;let f=ve(c);if(f!==void 0)return[f,Kl(u,f.length)]}function Jp(n,u){let r=Lt(n),c=Sn(r);if(c!==void 0&&c[0]===u)return c[1]}function J_(n){let u=Lt(n),r=Q_.exec(u);if(r==null){let v=Jp(u,"tighter");if(v===void 0)return{TAG:"Error",_0:"expected a declaration (infixl/infixr/infix/mixfix/tighter) at: "+u};let R=Sn(Lt(v));if(R===void 0)return{TAG:"Error",_0:'expected a category name after "tighter"'};let U=R[0],X=Jp(R[1],"than");if(X===void 0)return{TAG:"Error",_0:'expected "than" after "tighter '+U+'"'};let _=Sn(Lt(X));return _!==void 0?{TAG:"Ok",_0:[U_(U,_[0]),_[1]]}:{TAG:"Error",_0:'expected a category name after "than"'}}let c=r[0];if(c===void 0)return{TAG:"Error",_0:"malformed declaration keyword"};let f=ve(c);if(f===void 0)return{TAG:"Error",_0:"malformed declaration keyword"};let o;switch(f){case"infixl":o="Left";break;case"infixr":o="Right";break;default:o="NonAssoc"}let m=Kl(u,f.length),h=Sn(Lt(m));if(h===void 0)return{TAG:"Error",_0:'expected a category name after "'+f+'"'};let y=h[0],p=K_(h[1]);if(p===void 0)return{TAG:"Error",_0:'expected an operator name after category "'+y+'"'};let S=p[0];return S.includes("_")?{TAG:"Ok",_0:[d1(y,S,o),p[1]]}:{TAG:"Error",_0:'operator name "'+S+'" must contain at least one "_" hole'}}function F_(n){let u=n,r=k_;for(;;){let c=r,o=Lt(u),m=J_(o);if(m.TAG!=="Ok")return{TAG:"Ok",_0:[c,o]};let h=m._0;r=B_(c,h[0]),u=h[1]}}function W_(n){switch(n.assoc){case"Left":return"infixl";case"Right":return"infixr";case"NonAssoc":let r=n.parts[0],c=n.parts[n.parts.length-1|0];return r!==void 0&&r.TAG!=="Lit"&&c!==void 0&&c.TAG!=="Lit"?"infix":"mixfix"}}function I_(n){return W_(n)+" "+n.category+" "+n.name}function P_(n){return"tighter "+n[0]+" than "+n[1]}function p1(n){return n.ops.map(I_).concat(n.tighterThan.map(P_)).join(` +`)}function Fp(n){return qe(n.parts,0,(u,r)=>r.TAG==="Lit"?u:u+1|0)}function eS(n,u,r){switch(n){case"Left":return u===0?"Self":"Tighter";case"Right":return u===(r-1|0)?"Self":"Tighter";case"NonAssoc":return"Tighter"}}function tS(n,u,r){let c=Ne(n.immediateTighter[r],[]),f;for(;;){let o=f,m=c;if(m.some(p=>p===u))return!0;let y=m.flatMap(p=>Ne(n.immediateTighter[p],[])).filter(p=>!ql(o,p));if(y.length===0)return!1;f=qe(y,o,Da),c=y}}function vo(n,u,r){if(typeof r!="object")switch(r){case"Top":return!1;case"AppFunc":return typeof u=="object";case"AppArg":if(typeof u=="object")return!0;switch(u){case"ALambda":case"AnAtom":return!1;case"AnApp":return!0}}else{let c=r._0;if(typeof u!="object")return!1;let f=u._0;return f===c?r._1!=="Self":!tS(n,f,c)}}function y1(n){return u=>{let r=(m,h,y,p,S)=>{let v=u.printLeaf(h,y,p,S,m.reserved,(G,T,j,N)=>r(m,G,T,j,N));if(v!==void 0)return ve(v);let R=u.tryStrip(h);if(R===void 0)return n.leaf("unprintable","?");let U=R[1],X=R[0],_=u.tryOpHead(X);if(_===void 0)return c(m,X,U,y,p,S);let O=m.byName[_];return O!==void 0&&U.length>=Fp(O)?f(m,O,U,y,p,S):c(m,X,U,y,p,S)},c=(m,h,y,p,S,v)=>{let R=r(m,h,p,S,"AppFunc"),U=n.spaced([R].concat(y.map(X=>r(m,X,p,S,"AppArg"))));return vo(m,"AnApp",v)?n.parens(U):U},f=(m,h,y,p,S,v)=>{let R=Fp(h),U=y.slice(0,R),X=y.slice(R),_={contents:0},O=h.parts.map(B=>{if(B.TAG==="Lit")return n.leaf("op-lit",B._0);let J=_.contents;_.contents=J+1|0;let k=eS(h.assoc,J,R);return r(m,Ul(U,J),p,S,{TAG:"InCategory",_0:h.category,_1:k})}),G=n.spaced(O),T=X.length>0?"AppFunc":v,j=vo(m,{_0:h.category},T)?n.parens(G):G;if(X.length===0)return j;let N=n.spaced([j].concat(X.map(B=>r(m,B,p,S,"AppArg"))));return vo(m,"AnApp",v)?n.parens(N):N};return{prettyPrintAt:r,printPlainApp:c,printOpApplication:f,prettyPrintWithGrammar:(m,h,y,p)=>r(y,m,0,p,h?"AppArg":"Top")}}}function lS(n,u){return u}function nS(n){return n.join("")}function aS(n){return n.join(" ")}function uS(n){return"("+n+")"}let ll={leaf:lS,seq:nS,spaced:aS,parens:uS};function rS(){return{next:0}}function g1(n,u){let r=n.next;return n.next=n.next+1|0,r}function b1(n,u){if(u>=n.next){n.next=u+1|0;return}}function iS(n,u){return Uy(u,{TAG:"Schematic",schematic:n},(r,c,f)=>({TAG:"App",func:r,arg:{TAG:"Var",idx:f}}))}function we(n,u,r){let c=r!==void 0?r:0;switch(n.TAG){case"Var":let f=n.idx;return f>=c?{TAG:"Var",idx:f+u|0}:n;case"Symbol":case"Schematic":return n;case"Lam":return{TAG:"Lam",name:n.name,body:we(n.body,u,c+1|0)};case"App":return{TAG:"App",func:we(n.func,u,c),arg:we(n.arg,u,c)}}}function Xe(n,u,r){let c=r!==void 0?r:0,f=u.length,o=(m,h)=>{switch(m.TAG){case"Var":let y=m.idx;return y<(c+h|0)?m:y<((c+h|0)+f|0)?we(Ul(u,(y-c|0)-h|0),h,0):{TAG:"Var",idx:y-f|0};case"Symbol":case"Schematic":return m;case"Lam":return{TAG:"Lam",name:m.name,body:o(m.body,h+1|0)};case"App":return{TAG:"App",func:o(m.func,h),arg:o(m.arg,h)}}};return o(n,0)}function Su(n){for(;;){let u=n;switch(u.TAG){case"Lam":return{TAG:"Lam",name:u.name,body:Su(u.body)};case"App":let r=Su(u.func),c=Su(u.arg);if(r.TAG!=="Lam")return{TAG:"App",func:r,arg:c};n=Xe(r.body,[c],0);continue;default:return u}}}function Om(n,u){for(;;){let r=u,c=n;switch(c.TAG){case"Symbol":return r.TAG==="Symbol"&&c.name===r.name?c.constructor===r.constructor:!1;case"Var":return r.TAG==="Var"?c.idx===r.idx:!1;case"Schematic":return r.TAG==="Schematic"?c.schematic===r.schematic:!1;case"Lam":if(r.TAG!=="Lam")return!1;u=r.body,n=c.body;continue;case"App":if(r.TAG!=="App"||!Om(c.func,r.func))return!1;u=r.arg,n=c.arg;continue}}}function v1(n,u){for(;;){let r=u,c=n;switch(c.TAG){case"Var":return c.idx===r;case"Symbol":case"Schematic":return!1;case"Lam":u=r+1|0,n=c.body;continue;case"App":if(v1(c.func,r))return!0;n=c.arg;continue}}}function yc(n){let u;switch(n.TAG){case"Lam":u={TAG:"Lam",name:n.name,body:yc(n.body)};break;case"App":u={TAG:"App",func:yc(n.func),arg:yc(n.arg)};break;default:u=n}if(u.TAG!=="Lam")return u;let r=u.body;if(r.TAG!=="App")return u;let c=r.arg;if(c.TAG!=="Var"||c.idx!==0)return u;let f=r.func;if(v1(f,0))return u;{let o=(m,h)=>{switch(m.TAG){case"Var":let y=m.idx;return y>h?{TAG:"Var",idx:y-1|0}:m;case"Symbol":case"Schematic":return m;case"Lam":return{TAG:"Lam",name:m.name,body:o(m.body,h+1|0)};case"App":return{TAG:"App",func:o(m.func,h),arg:o(m.arg,h)}}};return o(f,0)}}function Le(n){return yc(Su(n))}function Qe(n,u){return Om(Le(n),Le(u))}function cS(){}function ze(n,u){for(;;){let r=n;switch(r.TAG){case"Symbol":case"Var":return r;case"Schematic":let c=ym(u,r.schematic);if(c===void 0)return r;n=c;continue;case"Lam":return{TAG:"Lam",name:r.name,body:ze(r.body,u)};case"App":return{TAG:"App",func:ze(r.func,u),arg:ze(r.arg,u)}}}}let sS=ju;function A1(n,u){let r=ju(n,c=>ze(c,u));return jc(r,u,(c,f,o)=>f!==void 0?f:o!==void 0?o:void 0)}function fS(n,u){return wt(n)===wt(u)?xA(n,(r,c)=>{let f=ym(u,r);return f!==void 0?Qe(c,f):!1}):!1}function Rt(n){if(n.TAG!=="App")return[n,[]];let u=Rt(n.func);return[u[0],u[1].concat([n.arg])]}function _u(n,u){for(;;){let r=u,c=n;if(r.length===0)return c;let f=Ze(r[0],void 0);u=r.slice(1),n={TAG:"App",func:c,arg:f}}}function Ke(n){return Rt(n)[0].TAG!=="Schematic"}function Vo(n){let u=Rt(n),r=u[0];if(r.TAG!=="Schematic")return;let c=u[1].map(f=>{if(f.TAG==="Var")return f.idx});if(c.every(v_))return[r.schematic,c.map(A_)]}function oS(n,u){let r=n.length-1|0;for(;;){let c=r;if(c<0)return;if(Me(Ul(n,c),u))return c;r=c-1|0}}function mS(n,u){let r=u.length,c=qe(u,-1,Ot),f=aA(c+1|0,y=>{let p=oS(u,y);return p!==void 0?{TAG:"Var",idx:(r-1|0)-p|0}:{TAG:"Symbol",name:"_unused",constructor:!1}}),o=Xe(n,f,0),m=r,h=o;for(;;){let y=h,p=m;if(p<=0)return y;h={TAG:"Lam",name:"x",body:y},m=p-1|0}}function _1(n,u){for(;;){let r=u;switch(r.TAG){case"Symbol":case"Var":return!1;case"Schematic":return r.schematic===n;case"Lam":u=r.body;continue;case"App":if(_1(n,r.func))return!0;u=r.arg;continue}}}function dS(n){let u={contents:void 0},r=(c,f)=>{for(;;){let o=f,m=c;switch(m.TAG){case"Var":let h=m.idx;if(h>=o){u.contents=kc(u.contents,h-o|0);return}else return;case"Symbol":case"Schematic":return;case"Lam":f=o+1|0,c=m.body;continue;case"App":r(m.func,o),c=m.arg;continue}}};return r(n,0),u.contents}function Wp(n,u){let r=Vo(n);if(r===void 0)return;let c=r[1],f=r[0];if(_1(f,u))return;let o=x_(c);if(N_(dS(u),o))return he(pm([[f,mS(u,c)]]))}function S1(n,u,r){for(;;){let c=u,o=Su(n),m=Su(c);if(Om(o,m))return he(void 0);if(o.TAG==="Lam"){let v=o.body;if(m.TAG==="Lam"){u=m.body,n=v;continue}u={TAG:"App",func:we(m,1,void 0),arg:{TAG:"Var",idx:0}},n=v;continue}if(m.TAG==="Lam"){u=m.body,n={TAG:"App",func:we(o,1,void 0),arg:{TAG:"Var",idx:0}};continue}let h=Vo(o),y=Vo(m);if(h!==void 0&&y!==void 0){let v=h[0];if(v===y[0]){let R=h[1],U=y[1];if(r===void 0)return;let X=R.length;if(X!==U.length)return;let _=rA(By(0,X-1|0),j=>Me(Ul(R,j),Ul(U,j))),O=g1(r),G=qe(_,{TAG:"Schematic",schematic:O},(j,N)=>({TAG:"App",func:j,arg:{TAG:"Var",idx:(X-1|0)-N|0}}));return he(pm([[v,((j,N)=>{for(;;){let B=N,J=j;if(J<=0)return B;N={TAG:"Lam",name:"x",body:B},j=J-1|0}})(X,G)]]))}}let p=Wp(o,m);if(p!==void 0)return he(ve(p));let S=Wp(m,o);if(S!==void 0)return he(ve(S));{let v=Rt(o),R=v[1],U=v[0],X=Rt(m),_=X[1],O=X[0],G;switch(U.TAG){case"Symbol":G=O.TAG==="Symbol"?U.name===O.name&&U.constructor===O.constructor:!1;break;case"Var":G=O.TAG==="Var"?U.idx===O.idx:!1;break;default:G=!1}if(!(G&&R.length===_.length))return;let T=R.length,j=0,N;for(;;){let B=N,J=j;if(J>=T)return he(B);let k=S1(ze(Ul(R,J),B),ze(Ul(_,J),B),r);if(k===void 0)return;N=A1(B,ve(k)),j=J+1|0}}}}function Je(n,u,r){let c=S1(n,u,r);return c!==void 0?Kv(ve(c),xt):xt}function hS(n){return n.concat(".")}function T1(n){let u=new RegExp("^([^\\s.|\\[\\]()]+)\\.","y"),r=u.exec(n.trim());if(r==null)return{TAG:"Error",_0:"not a meta name"};let c=r.slice(1);return c.length!==1?{TAG:"Error",_0:"impossible happened"}:{TAG:"Ok",_0:[c[0],n.trim().slice(u.lastIndex)]}}function Fe(n,u){return u(n)}function E1(n,u){let r=n,c=0,f=[];for(;;){let o=f,m=c,h=r;if(m>=u.length)return[h,o];let y=Ul(u,m);switch(h.TAG){case"Lam":switch(y){case"Func":case"Arg":return;case"Body":f=uA(o,[h.name]),c=m+1|0,r=h.body;continue}case"App":switch(y){case"Func":c=m+1|0,r=h.func;continue;case"Arg":c=m+1|0,r=h.arg;continue;case"Body":return}default:return}}}function gc(n,u,r,c){if(r>=u.length)return c;let f=Ul(u,r);switch(n.TAG){case"Lam":switch(f){case"Func":case"Arg":return n;case"Body":return{TAG:"Lam",name:n.name,body:gc(n.body,u,r+1|0,c)}}case"App":let o=n.arg,m=n.func;switch(f){case"Func":return{TAG:"App",func:gc(m,u,r+1|0,c),arg:o};case"Arg":return{TAG:"App",func:m,arg:gc(o,u,r+1|0,c)};case"Body":return n}default:return n}}function x1(n,u,r){return gc(n,u,0,r)}function Rm(n,u){return{TAG:"App",func:{TAG:"App",func:{TAG:"Symbol",name:"_=_",constructor:!1},arg:n},arg:u}}function Kc(n){if(n.TAG!=="App")return;let u=n.func;if(u.TAG!=="App")return;let r=u.func;if(r.TAG==="Symbol"&&r.name==="_=_"&&!r.constructor)return[u.arg,n.arg]}function G1(n){let u=(r,c,f)=>{let o=[f,r,c],m;switch(r.TAG){case"Lam":m=u(r.body,c.concat([r.name]),f.concat(["Body"]));break;case"App":m=u(r.func,c,f.concat(["Func"])).concat(u(r.arg,c,f.concat(["Arg"])));break;default:m=[]}return[o].concat(m)};return u(n,[],[])}function pS(n){switch(n){case"Func":return"F";case"Arg":return"A";case"Body":return"B"}}function N1(n){return n.map(pS).join("")}function j1(n){let u=new RegExp("([FAB]*)","y"),r=y=>{switch(y){case"A":return"Arg";case"F":return"Func";default:return"Body"}},c=u.exec(n);if(c==null)return[[],n];let f=n.slice(u.lastIndex),o=c.slice(1),m=o.length;return m!==1?m!==0?[[],n]:[[],n]:[o[0].split("").map(r),f]}function yS(n,u){let r={contents:n};return u.map(c=>{let o=(m=>{for(;;){let h=m;if(!r.contents.some(y=>y===h))return h;m=h+"'"}})(c);return r.contents=r.contents.concat([o]),o})}let O1=cm(h1(d1("eq","_=_","NonAssoc")),Y_),gS=/^\\(\d+)/,bS=/^\?(\d+)/;function vS(n,u,r,c,f){let o=Lt(n),m=gS.exec(o);if(m==null){if(vu(o,0)==="`"){let T=Sn(Kl(o,1));return T!==void 0?{TAG:"Ok",_0:[{TAG:"Symbol",name:T[0],constructor:!1},T[1]]}:{TAG:"Error",_0:"expected identifier after `"}}if(vu(o,0)==="("){let T=Kl(o,1),j=Sn(T);if(j!==void 0){let k=j[1],E=j[0];if(vu(Lt(k),0)==="."){let D=Kl(Lt(k),1),$=f(D,[E].concat(r),c);if($.TAG!=="Ok")return{TAG:"Error",_0:$._0};let Q=$._0,W=Lt(Q[1]);return vu(W,0)===")"?{TAG:"Ok",_0:[{TAG:"Lam",name:E,body:Q[0]},Kl(W,1)]}:{TAG:"Error",_0:"expected closing paren after lambda body"}}}let N=f(T,r,c);if(N.TAG!=="Ok")return{TAG:"Error",_0:N._0};let B=N._0,J=Lt(B[1]);return vu(J,0)===")"?{TAG:"Ok",_0:[B[0],Kl(J,1)]}:{TAG:"Error",_0:"expected closing paren"+J}}let R=bS.exec(o);if(R==null){if(vu(o,0)==="@"){let J=Sn(Kl(o,1));return J!==void 0?{TAG:"Ok",_0:[{TAG:"Symbol",name:J[0],constructor:!0},J[1]]}:{TAG:"Error",_0:"expected constructor name after @"}}let T=Sn(o);if(T===void 0)return{TAG:"Error",_0:"expected a term at: "+o};let j=T[1],N=T[0];if(ql(u,N))return{TAG:"Error",_0:'unexpected reserved word "'+N+'"'};let B=om(r,J=>J===N);return B!==void 0?{TAG:"Ok",_0:[{TAG:"Var",idx:B},j]}:{TAG:"Ok",_0:[{TAG:"Symbol",name:N,constructor:!1},j]}}let U=R[0],X=R[1];if(U===void 0)return{TAG:"Error",_0:"malformed schematic"};let _=ve(U);if(_===void 0)return{TAG:"Error",_0:"malformed schematic"};if(X===void 0)return{TAG:"Error",_0:"malformed schematic"};let O=ve(X);if(O===void 0)return{TAG:"Error",_0:"malformed schematic"};let G=wl(O);return G!==void 0?(c!==void 0&&b1(c,G),{TAG:"Ok",_0:[{TAG:"Schematic",schematic:G},Kl(o,_.length)]}):{TAG:"Error",_0:"invalid schematic index"}}let h=m[0],y=m[1];if(h===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let p=ve(h);if(p===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};if(y===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let S=ve(y);if(S===void 0)return{TAG:"Error",_0:"malformed de Bruijn index"};let v=wl(S);return v!==void 0?v{switch(f.TAG){case"Symbol":let S=f.name;return he(f.constructor?n.leaf("constructor","@"+S):ql(y,S)?n.leaf("symbol-escaped","`"+S):n.leaf("symbol",S));case"Var":let v=f.idx,R=m[v],U;if(R!==void 0){let _=om(m,G=>G===R),O=v>=o?"metavar":"boundvar";U=Me(_,v)?n.leaf(O,R):n.leaf("var-debruijn","\\"+v.toString())}else U=n.leaf("var-debruijn","\\"+v.toString());return he(U);case"Schematic":return he(n.leaf("schematic","?"+f.schematic.toString()));case"Lam":let X=f.name;return he(n.seq([n.leaf("lambda-punct","("),n.leaf("binder",X),n.leaf("lambda-punct",". "),p(f.body,o+1|0,[X].concat(m),"Top"),n.leaf("lambda-punct",")")]));case"App":return}},tryStrip:f=>{let o=Rt(f),m=o[1];if(m.length>0)return[o[0],m]},tryOpHead:f=>{if(f.TAG==="Symbol"&&!f.constructor)return f.name}}}function ES(n,u,r,c,f,o){switch(n.TAG){case"Symbol":let m=n.name;return he(n.constructor?ll.leaf("constructor","@"+m):ql(f,m)?ll.leaf("symbol-escaped","`"+m):ll.leaf("symbol",m));case"Var":let h=n.idx,y=r[h],p;if(y!==void 0){let v=om(r,U=>U===y),R=h>=u?"metavar":"boundvar";p=Me(v,h)?ll.leaf(R,y):ll.leaf("var-debruijn","\\"+h.toString())}else p=ll.leaf("var-debruijn","\\"+h.toString());return he(p);case"Schematic":return he(ll.leaf("schematic","?"+n.schematic.toString()));case"Lam":let S=n.name;return he(ll.seq([ll.leaf("lambda-punct","("),ll.leaf("binder",S),ll.leaf("lambda-punct",". "),o(n.body,u+1|0,[S].concat(r),"Top"),ll.leaf("lambda-punct",")")]));case"App":return}}function xS(n){let u=Rt(n),r=u[1];if(r.length>0)return[u[0],r]}function GS(n){if(n.TAG==="Symbol"&&!n.constructor)return n.name}let NS=y1(ll)({printLeaf:ES,tryStrip:xS,tryOpHead:GS});function We(n,u,r){return NS.prettyPrintWithGrammar(n,!0,u,r)}let jS=q_,Ie=TS.parse;const ot=Object.freeze(Object.defineProperty({__proto__:null,PrintLeaf:R1,asEquation:Kc,combineGrammars:jS,concrete:Ke,emptyGrammar:O1,equivalent:Qe,fresh:g1,freshenMetas:yS,locate:E1,makeGen:rS,makeSubst:cS,mapSubst:sS,mapTerms:Fe,mergeSubsts:A1,mkEquation:Rm,parse:Ie,parseMeta:T1,parsePath:j1,place:iS,positions:G1,prettyPrint:We,prettyPrintMeta:hS,prettyPrintPath:N1,reduce:Le,replaceAt:x1,seen:b1,strip:Rt,substDeBruijn:Xe,substEqual:fS,substitute:ze,unify:Je,unstrip:_u,upshift:we},Symbol.toStringTag,{value:"Module"}));let aa=Dt("AtomDef.AtomExpected"),D1=Zc(),OS=Zc();function RS(n,u,r){return{TAG:"Error",_0:"expected atom"}}function DS(n,u,r){return xt}function $S(n,u){return"NIL (THIS IS AN ERROR!)"}function MS(n,u){throw{RE_EXN_ID:aa,Error:new Error}}function wS(n){throw{RE_EXN_ID:aa,Error:new Error}}function zS(n,u){throw{RE_EXN_ID:aa,Error:new Error}}function CS(n,u,r){throw{RE_EXN_ID:aa,Error:new Error}}function kS(n,u,r){throw{RE_EXN_ID:aa,Error:new Error}}function BS(n){throw{RE_EXN_ID:aa,Error:new Error}}function US(n){throw{RE_EXN_ID:aa,Error:new Error}}let qS={LeftBase:OS,Base:D1,unify:DS,prettyPrint:$S,parse:RS,substitute:zS,upshift:CS,substDeBruijn:kS,concrete:BS,reduce:US,coerce:wS,onLeft:MS};function HS(n){throw{RE_EXN_ID:aa,Error:new Error}}let VS={make:HS};function Jc(n){return u=>(r=>(c=>{let f=n.Base,o=Et.getOrElse,m=j=>he(j),h=(j,N)=>{if(j._0.RE_EXN_ID===n.Base.Tag)return he(N(j._1))},y=(j,N,B)=>Wy.or(Ml(n.parse(j,N,B),J=>[f.wrap(J[0]),J[1]]),()=>r.parse(j,N,B)),p=(j,N)=>o(h(j,B=>n.prettyPrint(B,N)),()=>r.prettyPrint(j,N)),S=(j,N,B)=>j._0.RE_EXN_ID===n.Base.Tag&&N._0.RE_EXN_ID===n.Base.Tag?Lr(n.unify(j._1,N._1,void 0),J=>zr(J,f.wrap)):r.unify(j,N,B),v=j=>o(h(j,N=>he(N)),()=>n.coerce(j)),G={LeftBase:f,Base:D1,unify:S,prettyPrint:p,parse:y,substitute:(j,N)=>o(h(j,B=>{let J=Jy.filterMap(N,(k,E)=>v(E));return f.wrap(n.substitute(B,J))}),()=>r.substitute(j,N)),upshift:(j,N,B)=>o(h(j,J=>f.wrap(n.upshift(J,N,B))),()=>r.upshift(j,N,B)),substDeBruijn:(j,N,B)=>o(h(j,J=>f.wrap(n.substDeBruijn(J,N.map(k=>rm(k,v)),B))),()=>r.substDeBruijn(j,N,B)),concrete:j=>o(h(j,n.concrete),()=>r.concrete(j)),reduce:j=>o(h(j,N=>f.wrap(n.reduce(N))),()=>r.reduce(j)),coerce:m,onLeft:h};return{Atom:G,AtomView:(j=>({make:B=>{let J=B.scope,k=B.atom;return Et.getOrElse(j.onLeft(k,E=>b.jsx(u.make,{atom:E,scope:J})),()=>b.jsx(c.make,{atom:k,scope:J}))}}))(G)}}))}var Ao={exports:{}},pe={};var Ip;function LS(){if(Ip)return pe;Ip=1;var n=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),m=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),v=Symbol.for("react.activity"),R=Symbol.iterator;function U(x){return x===null||typeof x!="object"?null:(x=R&&x[R]||x["@@iterator"],typeof x=="function"?x:null)}var X={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,O={};function G(x,V,ee){this.props=x,this.context=V,this.refs=O,this.updater=ee||X}G.prototype.isReactComponent={},G.prototype.setState=function(x,V){if(typeof x!="object"&&typeof x!="function"&&x!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,x,V,"setState")},G.prototype.forceUpdate=function(x){this.updater.enqueueForceUpdate(this,x,"forceUpdate")};function T(){}T.prototype=G.prototype;function j(x,V,ee){this.props=x,this.context=V,this.refs=O,this.updater=ee||X}var N=j.prototype=new T;N.constructor=j,_(N,G.prototype),N.isPureReactComponent=!0;var B=Array.isArray;function J(){}var k={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(x,V,ee){var te=ee.ref;return{$$typeof:n,type:x,key:V,ref:te!==void 0?te:null,props:ee}}function $(x,V){return D(x.type,V,x.props)}function Q(x){return typeof x=="object"&&x!==null&&x.$$typeof===n}function W(x){var V={"=":"=0",":":"=2"};return"$"+x.replace(/[=:]/g,function(ee){return V[ee]})}var H=/\/+/g;function C(x,V){return typeof x=="object"&&x!==null&&x.key!=null?W(""+x.key):V.toString(36)}function M(x){switch(x.status){case"fulfilled":return x.value;case"rejected":throw x.reason;default:switch(typeof x.status=="string"?x.then(J,J):(x.status="pending",x.then(function(V){x.status==="pending"&&(x.status="fulfilled",x.value=V)},function(V){x.status==="pending"&&(x.status="rejected",x.reason=V)})),x.status){case"fulfilled":return x.value;case"rejected":throw x.reason}}throw x}function A(x,V,ee,te,ue){var ie=typeof x;(ie==="undefined"||ie==="boolean")&&(x=null);var se=!1;if(x===null)se=!0;else switch(ie){case"bigint":case"string":case"number":se=!0;break;case"object":switch(x.$$typeof){case n:case u:se=!0;break;case S:return se=x._init,A(se(x._payload),V,ee,te,ue)}}if(se)return ue=ue(x),se=te===""?"."+C(x,0):te,B(ue)?(ee="",se!=null&&(ee=se.replace(H,"$&/")+"/"),A(ue,V,ee,"",function(lt){return lt})):ue!=null&&(Q(ue)&&(ue=$(ue,ee+(ue.key==null||x&&x.key===ue.key?"":(""+ue.key).replace(H,"$&/")+"/")+se)),V.push(ue)),1;se=0;var ye=te===""?".":te+":";if(B(x))for(var Ae=0;Ae{let c=r[1];return tt(n,f=>{c.forEach(o=>{if(o>=f.contents){f.contents=o+1|0;return}})}),[r[0],c]})}let sT={op:nT,opInv:aT,opString:"+",openTerm:"nat(",closeTerm:")",formatMultiple:uT,formatMultipleConst:rT,parseConst:xm,parseVar:iT,parseSchema:cT},fT={schemas:void 0,vars:void 0,const:0};function oT(n){return{schemas:void 0,vars:void 0,const:n}}function mT(n){return{schemas:void 0,vars:Yy(void 0,n,1),const:0}}function dT(n,u){return{schemas:Yy(void 0,n,{allowed:u,count:1}),vars:void 0,const:0}}let $1=Zc(),hT=$1.Tag,pT=$1.wrap,st={Const:sT,identity:fT,$$const:oT,$$var:mT,schematic:dT,Tag:hT,wrap:pT},yT=Na,bc={cmp:yT};function M1(n,u){return'"'+n.map(r=>{switch(r.TAG){case"String":return r._0;case"Var":return gm(r.idx,u);case"Schematic":return Zy(r.schematic,r.allowed,u)}}).join(" ")+'"'}function Pn(n,u){return n.flatMap(r=>{switch(r.TAG){case"String":case"Var":return[r];case"Schematic":let c=u.get(r.schematic);return c!==void 0?c:[r]}})}function w1(n){return qe(n,void 0,(u,r)=>{switch(r.TAG){case"String":case"Var":return u;case"Schematic":return Mo(u,r.schematic,c=>wr(tt(c,f=>f+1|0),1))}})}function ey(n){return Ne(tt(GA(w1(n)),u=>u[1]),0)}function gT(n){return qe(n.map(u=>{switch(u.TAG){case"Var":return zc(Jl(bc),u.idx);case"String":case"Schematic":return Jl(bc)}}),Jl(bc),ko)}let mc=new Map;function In(n,u){let r=new Map;return r.set(n,u),r}function ty(n){return n.length!==0?[Ze(n[0],void 0),n.slice(1)]:Fl({TAG:"Error",_0:"expected nonempty array"})}function ly(n,u){return Ne(tt(u,r=>[r]),[]).concat(n)}function bT(n,u,r){let c=(h,y)=>{switch(h.TAG){case"String":switch(y.TAG){case"String":return h._0===y._0;case"Var":case"Schematic":return!1}case"Var":switch(y.TAG){case"Var":return h.idx===y.idx;case"String":case"Schematic":return!1}case"Schematic":return!1}},f=(h,y)=>{for(;;){let p=y,S=h;if(S.length===0)return p.length!==0?[]:[mc];let v=ty(S),R=v[1],U=v[0];switch(U.TAG){case"String":case"Var":break;case"Schematic":let _=U.allowed,O=U.schematic;return By(0,p.length).map(G=>{let T=p.slice(0,G),j=gT(T),N=Co(_,bc);if(!Bo(j,N))return[];let B=In(O,T);return f(Pn(R,B),Pn(p.slice(G),B)).map(J=>{let k=new Map;return Au(B.entries(),E=>{if(E!==void 0){k.set(E[0],Pn(E[1],J));return}}),Au(J.entries(),E=>{if(E!==void 0){k.set(E[0],Pn(E[1],B));return}}),k})}).flat()}if(p.length===0)return[];let X=ty(p);if(!c(U,X[0]))return[];y=X[1],h=R}},o=ey(n),m=ey(u);if(o===0)return bo(void 0,void 0,f(u,n));if(m===0)return bo(void 0,void 0,f(n,u));if(Ot(o,m)<=2){let h=p=>{let S={contents:!1},v=(X,_,O,G)=>{for(;;){let T=G,j=O,N=_,B=X,J=Dy(T,C=>Me(C[0],[B,N])),k;if(J!==void 0){let C=Ze(T[J],void 0);k=[T.map((A,z)=>J===z?[[B,N],j+1|0]:A),C[1]]}else k=[[[[B,N],1]].concat(T),0];let E=k[0],D=Ot(k[1],j),$=(C,M,A,z,Y,P)=>{let x=(z!==void 0?z:!1)?[M,A]:[M.slice(1),A.slice(1)];return v(ly(Pn(x[0],C),Y),ly(Pn(x[1],C),P),D,E).map(V=>{let ee=new Map;return Au(C.entries(),te=>{if(te!==void 0){ee.set(te[0],Pn(te[1],V));return}}),Au(V.entries(),te=>{if(te===void 0)return;let ue=te[1],ie=te[0];Et.getOrElse(tt(ee.get(ie),se=>{}),()=>{ee.set(ie,ue)})}),ee})},Q=(C,M)=>M.length>1&&EA(w1(M),C)?[]:D===p?[In(C,M)]:[];if(D>p)return S.contents=!0,[];if(Me(B,N)&&D===p)return[mc];if(Me(B,N))return[];let W=0,H=0;if(B.length!==1)H=2;else{let C=B[0];switch(C.TAG){case"String":case"Var":H=2;break;case"Schematic":return Q(C.schematic,N)}}if(H===2)if(N.length!==1)W=1;else{let C=N[0];switch(C.TAG){case"String":case"Var":W=1;break;case"Schematic":return Q(C.schematic,B)}}if(W===1){let C=(P,re,x,V)=>{let ee={TAG:"Schematic",schematic:P,allowed:re},te=V[0];if(te===void 0)return $(In(P,[]),x,V,void 0,void 0,void 0);switch(te.TAG){case"String":case"Var":break;case"Schematic":let ue=te.schematic,ie=te.allowed,se={TAG:"Schematic",schematic:ue,allowed:ie},ye=$(In(P,[]),x,V,!0,void 0,void 0);return P===ue?ye.concat($(mc,x,V,void 0,void 0,void 0)):[ye,$(In(P,[se,ee]),x,V,void 0,ee,void 0),$(In(ue,[ee,se]),x,V,void 0,void 0,se)].flat()}return[$(In(P,[]),x,V,!0,void 0,void 0),$(In(P,[te,{TAG:"Schematic",schematic:P,allowed:re}]),x,V,void 0,ee,void 0)].flat()},M=B[0],A=N[0],z=0,Y=0;if(M!==void 0)switch(M.TAG){case"String":case"Var":Y=3;break;case"Schematic":return C(M.schematic,M.allowed,B,N)}else{if(A===void 0)return D===p?[mc]:[];Y=3}if(Y===3){if(A===void 0)return[];switch(A.TAG){case"String":case"Var":z=2;break;case"Schematic":return C(A.schematic,A.allowed,N,B)}}if(z===2){if(M===void 0)return[];if(!Me(M,A))return[];G=E,O=D,_=N.slice(1),X=B.slice(1);continue}}}};return[v(n,u,0,[]).toSorted((X,_)=>{let O=j=>qe(Array.from(zr(j,N=>N.length).values()),0,(N,B)=>N+B|0),G=O(X),T=O(_);return GVA.cyrb53(OA(p,void 0,S=>M1(S,[])),void 0);return ky(xu([0,!0,void 0],p=>{if(!p[1])return;let S=p[0],v=h(S),R={contents:p[2]},U=v[0].filter(X=>{let _=y(X),O=G_(R.contents,_);return R.contents=kc(R.contents,_),!O});return[bo(void 0,void 0,U),[S+1|0,v[1],R.contents]]}))}else return xt}function vT(n,u,r){let c=r!==void 0?r:0,f=u.length;return n.flatMap(o=>{switch(o.TAG){case"String":return[o];case"Var":let m=o.idx;if(m=f)return[{TAG:"Var",idx:m-f|0}];let h=u[m-c|0];if(h!==void 0)return h;throw{RE_EXN_ID:qr,_1:"index "+(m-c|0).toString()+" not of sort string",Error:new Error};case"Schematic":return[{TAG:"Schematic",schematic:o.schematic,allowed:yt(o.allowed,y=>{if(!(y<(c+f|0)))return y-(c+f|0)|0})}]}})}function AT(n,u,r){let c=r!==void 0?r:0;return n.map(f=>{switch(f.TAG){case"String":return f;case"Var":let o=f.idx;return{TAG:"Var",idx:o>=c?o+u|0:o};case"Schematic":return{TAG:"Schematic",schematic:f.schematic,allowed:f.allowed.map(m=>m>=c?m+u|0:m)}}})}function _T(n,u,r){let c={contents:0},f=!1,o={contents:{TAG:"Ok",_0:[]}},m=O=>{let G=n.slice(c.contents,c.contents+5|0);o.contents={TAG:"Error",_0:"problem here: "+G+"...: "+O}},h=O=>{c.contents=c.contents+O|0},y=(O,G)=>{Ml(o.contents,T=>{T.push(O)}),tt(G,h)},p=O=>Fy(O,n.slice(c.contents)),S=()=>{let O=new RegExp("^"+LA),G=/^([!@#\$%\^~&*_+\-={};':|,.<>\/?]+)/,T=/^(\d+)/,j=wr(wr(p(O),p(G)),p(T));if(j===void 0)return m("expected string");let N=j[0];if(N.length!==1)return m("regex string lit error");let B=N[0];y({TAG:"String",_0:B},j[1])},v=()=>{let G=p(/\\([\$\?\\\"])/);if(G===void 0)return m("expected valid escaped character");let T=G[0];if(T.length!==1)return m("regex escaped error");let j=T[0];y({TAG:"String",_0:j},G[1])},R=O=>Ze(wl(O),void 0),U=()=>{let G=p(/\?(\d+)\(((?:\d+\s*)*)\)/);if(G===void 0)return m("expected schematic literal");let T=G[0];if(T.length!==2)return m("schema lit regex error");let j=T[0],N=T[1],B=R(j),J=$a(N.trim().split(/\s+/)).filter(k=>k!=="").map(R);y({TAG:"Schematic",schematic:B,allowed:J},G[1])},X=()=>{let O=/^\$\\(\d+)/,G=/^\$([a-zA-Z]\w*)/,T=p(O);if(T!==void 0){let k=T[0];if(k.length!==1)return m("var lit regex error");let E=k[0];return y({TAG:"Var",idx:R(E)},T[1])}let j=p(G);if(j===void 0)return m("expected var");let N=j[0];if(N.length!==1)return m("var regex error");let B=N[0],J=Oy(u,B);return J!==void 0?y({TAG:"Var",idx:J},j[1]):m("expected variable in scope")},_=p(/^\s*"/);for(_!==void 0?c.contents=_[1]:m("expected open quote");c.contents[O,n.slice(c.contents)])}function ST(n){return n}function TT(n){return n.every(u=>{switch(u.TAG){case"String":case"Var":return!0;case"Schematic":return!1}})}function ET(n){let u=n._1,r=n._0;if(r.RE_EXN_ID===Hr.Tag)return[{TAG:"String",_0:u}];if(r.RE_EXN_ID!==$c.Tag)return r.RE_EXN_ID===Xr.Tag?u:r.RE_EXN_ID===st.Tag&&wt(u.schemas)===0&&wt(u.vars)===0?[{TAG:"String",_0:u.const.toString()}]:void 0;let c;return c=u.TAG==="Var"?{TAG:"Var",idx:u.idx}:{TAG:"Schematic",schematic:u.schematic,allowed:u.allowed},[c]}function ny(n){let u=n.scope[n.idx];return u!==void 0&&n.scope.indexOf(u)===n.idx?b.jsx("span",{children:u,className:"term-metavar"}):b.jsxs("span",{children:["\\",n.idx],className:"term-metavar-unnamed"})}function xT(n){return[[b.jsx("span",{children:"(",className:"symbol"},"-1")],n,[b.jsx("span",{children:")",className:"symbol"},"-2")]].flat()}function GT(n){let u=n.scope,r=n.piece;switch(r.TAG){case"String":return b.jsx("span",{children:r._0,className:"term-const"});case"Var":return ny({idx:r.idx,scope:u});case"Schematic":return b.jsxs("span",{children:["?",r.schematic,b.jsx("span",{children:xT($r(r.allowed.map((c,f)=>xe.createElement(ny,bm({idx:c,scope:u},f)))," ")),className:"term-schematic-telescope"})],className:"term-schematic"})}}function NT(n){let u=n.scope;return b.jsxs("span",{children:['"',$r(n.atom.map((r,c)=>{let f=c.toString();return b.jsx(GT,{piece:r,scope:u},f)})," "),'"'],className:"term-compound"})}let _o=Xr,xn={Base:Xr,unify:bT,prettyPrint:M1,parse:_T,substitute:Pn,upshift:AT,substDeBruijn:vT,concrete:TT,reduce:ST,coerce:ET},z1={make:NT},jT="^[^|(){}\\s\\-—][^(){}\\s]*",OT="^\\n?\\s*[-—][-—][\\-—]+[ ]*([^(){}|\\s\\-—][^(){}\\s]*)?";function ft(n){return u=>{let r=(_,O)=>{let G=n.mapSubst(O,T=>n.upshift(T,_.vars.length,void 0));return{vars:_.vars,premises:_.premises.map(T=>r(T,G)),conclusion:u.reduce(u.substitute(_.conclusion,G))}},c=(_,O,G)=>{let T=G!==void 0?G:0,j=_.vars.length,N=O.map(B=>n.upshift(B,j,T));return{vars:_.vars,premises:_.premises.map(B=>c(B,N,T+j|0)),conclusion:u.reduce(u.substDeBruijn(_.conclusion,N,T+j|0))}},f=(_,O,G)=>{let T=G!==void 0?G:0,j=_.vars.length;return{vars:_.vars,premises:_.premises.map(N=>f(N,O,T+j|0)),conclusion:u.upshift(_.conclusion,O,T+j|0)}},o=(_,O)=>({premises:_.premises.map(G=>r(G,O)),conclusion:u.reduce(u.substitute(_.conclusion,O))}),m=(_,O)=>{if(O.length!==_.vars.length)throw{RE_EXN_ID:"Assert_failure",_1:["Rule.res",46,4],Error:new Error};let G=Dl([O]);return G.reverse(),{premises:_.premises.map(T=>c(T,G,void 0)),conclusion:u.reduce(u.substDeBruijn(_.conclusion,G,void 0))}},h=(_,O,G)=>_.vars.map(T=>n.place(n.fresh(O,he(T)),G)),y=_=>{let O=new RegExp(jT,"y"),G=O.exec(_.trim());if(G==null)return{TAG:"Error",_0:"expected rule name"};let T=G[0];if(T===void 0)return{TAG:"Error",_0:"expected rule name"};let j=ve(T);return j!==void 0&&j.trim()!==""?{TAG:"Ok",_0:[j,_.trim().slice(O.lastIndex)]}:{TAG:"Error",_0:"expected rule name"}},p=_=>{let O=new RegExp(OT,"y"),G=O.exec(_);if(G==null)return{TAG:"Error",_0:"expected vinculum"};let T=G[1];if(T!==void 0){let j=ve(T);if(j!==void 0&&j.trim()!=="")return{TAG:"Ok",_0:[j,_.slice(O.lastIndex)]}}return{TAG:"Ok",_0:["",_.slice(O.lastIndex)]}},S=Dt("Rule.Make(Term)(Judgment).InternalParseError"),v=(_,O,G,T)=>{let j=G!==void 0?G:[];if(Me(_.trim()[0],"[")){let N=String(_.trim().slice(1)),B={TAG:"Error",_0:""},J=[];for(;B=n.parseMeta(N),En(B);){let E=Fl(B);J.unshift(E[0]),N=E[1]}let k=[];try{for(;N.trim().slice(0,2)!=="|-"&&Xc(N.trim()[0],"]");){let Q=v(N,O,J.concat(j),T);if(Q.TAG==="Ok"){let W=Q._0;N=W[1],k.push(W[0])}else throw{RE_EXN_ID:S,_1:"expected turnstile or premise",Error:new Error}}if(Me(N.trim()[0],"]")){let Q=N.trim().slice(1);if(N=Q,k.length!==1)return{TAG:"Error",_0:"Conclusion appears to be multiple terms"};let W=k[0];return W.vars.length!==0||W.premises.length!==0?{TAG:"Error",_0:"Conclusion appears to be multiple terms"}:{TAG:"Ok",_0:[{vars:J,premises:[],conclusion:W.conclusion},Q]}}N=N.trim().slice(2);let E=u.parse(N,O,J.concat(j),T);if(E.TAG!=="Ok")return{TAG:"Error",_0:E._0};let D=E._0,$=D[1];return Me($.trim()[0],"]")?(N=$.trim().slice(1),{TAG:"Ok",_0:[{vars:J,premises:k,conclusion:D[0]},N]}):{TAG:"Error",_0:"Expected closing bracket"}}catch(E){let D=la(E);if(D.RE_EXN_ID===S)return{TAG:"Error",_0:D._1};throw D}}else{let N=u.parse(_,O,j,T);if(N.TAG!=="Ok")return{TAG:"Error",_0:N._0};let B=N._0;return{TAG:"Ok",_0:[{vars:[],premises:[],conclusion:B[0]},B[1]]}}},R=(_,O,G,T)=>{let j=T!==void 0?T:[],N=String(_),B={TAG:"Error",_0:""},J=[];try{for(;B=n.parseMeta(N),En(B);){let W=Fl(B);J.unshift(W[0]),N=W[1]}let k={TAG:"Error",_0:""},E=[];for(;k=p(N),zy(k);){let W=v(N,O,J.concat(j),G);if(W.TAG==="Ok"){let H=W._0;N=H[1],E.push(H[0])}else throw{RE_EXN_ID:S,_1:W._0,Error:new Error}}let D=Fl(k);N=D[1];let $=u.parse(N,O,J.concat(j),G);if($.TAG!=="Ok")return{TAG:"Error",_0:$._0};let Q=$._0;return{TAG:"Ok",_0:[[{vars:J,premises:E,conclusion:Q[0]},D[0]],Q[1]]}}catch(k){let E=la(k);if(E.RE_EXN_ID===S)return{TAG:"Error",_0:E._1};throw E}},U=(_,O,G)=>{let T=G!==void 0?G:[];if(_.vars.length===0&&_.premises.length===0)return u.prettyPrint(_.conclusion,O,T);let j=_.vars.slice();return j.reverse(),"[".concat(j.map(n.prettyPrintMeta).join("").concat(" ").concat(_.premises.length===0?u.prettyPrint(_.conclusion,O,Dl([_.vars,T])):_.premises.map(N=>U(N,O,Dl([_.vars,T]))).join(" ").concat(" |- ").concat(u.prettyPrint(_.conclusion,O,Dl([_.vars,T]))))).concat("]")};return{substitute:r,substDeBruijn:c,upshift:f,substituteBare:o,instantiate:m,genSchemaInsts:h,parseRuleName:y,parseVinculum:p,InternalParseError:S,parseInner:v,parseTopLevel:R,prettyPrintInline:U,prettyPrintTopLevel:(_,O,G,T)=>{let j=O!==void 0?O:"",N=T!==void 0?T:[],B=k=>{let E=Math.max(...k.map(D=>D.length).concat([4]));return k.concat(["-".repeat(E).concat(" ").concat(j)])},J=_.vars.map(n.prettyPrintMeta);return(J.reverse(),J).join("").concat(zt).concat(B(_.premises.map(k=>U(k,G,Dl([_.vars,N])))).concat([u.prettyPrint(_.conclusion,G,Dl([_.vars,N]))]).map(k=>" ".concat(k)).join(zt))}}}}function xa(n,u){if(n.TAG!=="Local")return"--"+n.name;let r=n.index,c=u[r];return c===void 0||Ry(u,!1,(o,m,h)=>o?!0:h>r?m===c:!1)?"-"+r.toString():c}function Uc(n,u){let c=/^(?:-(\d+)(?![^()\[\]{}|\-\s])|--([^()\[\]{}|\-\s][^()\[\]{}|\s]*)|([^()\[\]{}|\-\s][^()\[\]{}|\s]*))(.*)$/s.exec(n);if(c==null)return{TAG:"Error",_0:"Syntax error: Invalid identifier format"};let f=c.slice(1),o=Ne(f[3],""),m=f[0],h=f[1],y=f[2];if(m!==void 0){console.log(f);let S=wl(m);return S!==void 0?{TAG:"Ok",_0:[{TAG:"Local",index:S},o]}:{TAG:"Error",_0:"Not that many local rules"}}if(h!==void 0)return{TAG:"Ok",_0:[{TAG:"Global",name:h},o]};if(y===void 0)return{TAG:"Error",_0:"Failed to match valid identifier token"};let p=Ry(u,-1,(S,v,R)=>v===y?R:S);return p===-1?{TAG:"Ok",_0:[{TAG:"Global",name:y},o]}:{TAG:"Ok",_0:[{TAG:"Local",index:p},o]}}let Tn={prettyPrint:xa,parse:Uc};function Ru(n){return u=>({Rule:ft(n)(u),lookup:(o,m)=>m.TAG==="Local"?o.localFacts[m.index]:o.globalFacts[m.name],facts:o=>{let m=o.localFacts.map((y,p)=>[{TAG:"Local",index:p},y]),h=Object.entries(o.globalFacts).map(y=>[{TAG:"Global",name:y[0]},y[1]]);return m.concat(h)}})}function Yr(n){let u=(h,y)=>{switch(h.TAG){case"Action":return{TAG:"Action",_0:h._0,_1:y(h._1),_2:h._2};case"Delay":let p=h._1;return{TAG:"Delay",_0:h._0,_1:()=>p().map(S=>u(S,y))};case"Group":return{TAG:"Group",_0:h._0,_1:h._1.map(S=>u(S,y))}}};return{map:u,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:h=>({goal:h,assumptions:[]}),atAssumption:(h,y)=>({goal:[],assumptions:[[h,y]]}),combine:(h,y)=>{let p={};return h.assumptions.concat(y.assumptions).forEach(S=>{let v=S[0].toString(),R=Ne(p[v],[]);p[v]=R.concat(S[1])}),{goal:h.goal.concat(y.goal),assumptions:Object.entries(p).map(S=>[Ze(wl(S[0]),void 0),S[1]])}},mapAttached:(h,y)=>({goal:h.goal.map(p=>u(p,y)),assumptions:h.assumptions.map(p=>[p[0],p[1].map(S=>u(S,y))])})}}function RT(n){return u=>{let r=ft(n)(u),c=ft(n)(u),f=(E,D)=>D.TAG==="Local"?E.localFacts[D.index]:E.globalFacts[D.name],o=E=>{let D=E.localFacts.map((Q,W)=>[{TAG:"Local",index:W},Q]),$=Object.entries(E.globalFacts).map(Q=>[{TAG:"Global",name:Q[0]},Q[1]]);return D.concat($)},m={Rule:c,lookup:f,facts:o},h=(E,D)=>{switch(E.TAG){case"Action":return{TAG:"Action",_0:E._0,_1:D(E._1),_2:E._2};case"Delay":let $=E._1;return{TAG:"Delay",_0:E._0,_1:()=>$().map(Q=>h(Q,D))};case"Group":return{TAG:"Group",_0:E._0,_1:E._1.map(Q=>h(Q,D))}}},U={map:h,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:E=>({goal:E,assumptions:[]}),atAssumption:(E,D)=>({goal:[],assumptions:[[E,D]]}),combine:(E,D)=>{let $={};return E.assumptions.concat(D.assumptions).forEach(Q=>{let W=Q[0].toString(),H=Ne($[W],[]);$[W]=H.concat(Q[1])}),{goal:E.goal.concat(D.goal),assumptions:Object.entries($).map(Q=>[Ze(wl(Q[0]),void 0),Q[1]])}},mapAttached:(E,D)=>({goal:E.goal.map($=>h($,D)),assumptions:E.assumptions.map($=>[$[0],$[1].map(Q=>h(Q,D))])})},X=E=>E.subgoals.map((D,$)=>[$,D]),_=(E,D,$)=>{let Q=E.subgoals.slice();return Q[D]=$,{ruleName:E.ruleName,instantiation:E.instantiation,subgoals:Q}},O=(E,D)=>({ruleName:E.ruleName,instantiation:E.instantiation,subgoals:E.subgoals.map(D)}),G=(E,D)=>({ruleName:E.ruleName,instantiation:E.instantiation.map($=>n.substitute($,D)),subgoals:E.subgoals}),T=Dt("Method.Derivation(Term)(Judgment).InternalParseError");return{Rule:r,Context:m,Results:U,subproofs:X,setSubproof:_,map:O,substitute:G,InternalParseError:T,keywords:["by"],prettyPrint:(E,D,$,Q,W,H)=>{let C=W!==void 0?W:0,M=E.instantiation.map(A=>n.prettyPrint(A,D,$));return"by (".concat([xa(E.ruleName,Q)].concat(M).join(" ")).concat(") {").concat(E.subgoals.length>0?zt:"").concat(E.subgoals.map(A=>H(A,D,$,Q,C+2|0)).join(zt)).concat("}")},parse:(E,D,$,Q,W,H,C)=>{let M=E.trim();if(!Me(M[0],"("))return{TAG:"Error",_0:"Expected ("};let A=Uc(M.slice(1).trim(),W);if(A.TAG!=="Ok")return{TAG:"Error",_0:A._0};let z=A._0;M=z[1];let Y=[],P={TAG:"Error",_0:""};for(;P=n.parse(M,$,Q,he(H)),En(P);){let x=Fl(P);Y.push(x[0]),M=x[1].trim()}if(!Me(M[0],")"))return{TAG:"Error",_0:") or term expected"};M=M.slice(1).trim();let re=[];if(!Me(M[0],"{"))return{TAG:"Error",_0:"{ expected"};M=M.slice(1).trim();try{for(;Xc(M[0],"}");){let x=C(M,$,Q,W,H);if(x.TAG==="Ok"){let V=x._0;re.push(V[0]),M=V[1].trim()}else throw{RE_EXN_ID:T,_1:x._0,Error:new Error}}return Me(M[0],"}")?(M=M.slice(1).trim(),{TAG:"Ok",_0:[{ruleName:z[0],instantiation:Y,subgoals:re},M]}):{TAG:"Error",_0:"} or subgoal proof expected"}}catch(x){let V=la(x);if(V.RE_EXN_ID===T)return{TAG:"Error",_0:V._1};throw V}},apply:(E,D,$,Q)=>{let W=yt(o(E),H=>{let C=H[1],M=H[0],A=r.genSchemaInsts(C,$,E.fixes),z=r.instantiate(C,A);if(!u.concrete(z.conclusion))return;let Y=eA(No(u.unify(z.conclusion,D,he($)),100)),P=V=>({ruleName:M,instantiation:A.map(ee=>n.reduce(n.substitute(ee,V))),subgoals:z.premises.map(Q)}),re=Y.length;if(re!==1)return re!==0?{TAG:"Delay",_0:{TAG:"RefRule",_0:M},_1:()=>Y.map(V=>({TAG:"Action",_0:{TAG:"Text",_0:Lc(nA(C.vars),A.map(te=>n.substitute(te,V))).map(te=>{let ue=n.prettyPrintMeta(te[0]);return ue.slice(0,ue.length-1|0)+" ↦ "+n.prettyPrint(te[1],n.emptyGrammar,E.fixes)}).join(", ")},_1:P(V),_2:V}))}:void 0;let x=Y[0];return{TAG:"Action",_0:{TAG:"RefRule",_0:M},_1:P(x),_2:x}});return W.length>0?{goal:[{TAG:"Group",_0:{TAG:"Text",_0:"Introduction"},_1:W}],assumptions:[]}:{goal:[],assumptions:[]}},check:(E,D,$,Q)=>{let W=xa(E.ruleName,D.localFactNames),H=f(D,E.ruleName);if(H===void 0)return{TAG:"Error",_0:"Cannot find rule '"+W+"'"};if(H.vars.length!==E.instantiation.length)return{TAG:"Error",_0:"Incorrect number of binders"};let C=r.instantiate(H,E.instantiation),M=C.conclusion,A=C.premises;if(u.equivalent(u.reduce(M),u.reduce($)))return E.subgoals.length===A.length?{TAG:"Ok",_0:{ruleName:E.ruleName,instantiation:E.instantiation,subgoals:Gu(E.subgoals,A,Q)}}:{TAG:"Error",_0:"Incorrect number of subgoals"};let z=u.prettyPrint(M,n.emptyGrammar,D.fixes),Y=u.prettyPrint($,n.emptyGrammar,D.fixes);return{TAG:"Error",_0:"Conclusion of rule '".concat(z).concat("' doesn't match goal '").concat(Y).concat("'")}}}}}function DT(n){return u=>{let r=ft(n)(u),c=ft(n)(u),f=(E,D)=>D.TAG==="Local"?E.localFacts[D.index]:E.globalFacts[D.name],m={Rule:c,lookup:f,facts:E=>{let D=E.localFacts.map((Q,W)=>[{TAG:"Local",index:W},Q]),$=Object.entries(E.globalFacts).map(Q=>[{TAG:"Global",name:Q[0]},Q[1]]);return D.concat($)}},h=(E,D)=>{switch(E.TAG){case"Action":return{TAG:"Action",_0:E._0,_1:D(E._1),_2:E._2};case"Delay":let $=E._1;return{TAG:"Delay",_0:E._0,_1:()=>$().map(Q=>h(Q,D))};case"Group":return{TAG:"Group",_0:E._0,_1:E._1.map(Q=>h(Q,D))}}},y=()=>({goal:[],assumptions:[]}),p=E=>({goal:E,assumptions:[]}),S=(E,D)=>({goal:[],assumptions:[[E,D]]}),v=(E,D)=>{let $={};return E.assumptions.concat(D.assumptions).forEach(Q=>{let W=Q[0].toString(),H=Ne($[W],[]);$[W]=H.concat(Q[1])}),{goal:E.goal.concat(D.goal),assumptions:Object.entries($).map(Q=>[Ze(wl(Q[0]),void 0),Q[1]])}},U={map:h,emptyAttached:y,atGoal:p,atAssumption:S,combine:v,mapAttached:(E,D)=>({goal:E.goal.map($=>h($,D)),assumptions:E.assumptions.map($=>[$[0],$[1].map(Q=>h(Q,D))])})},X=Dt("Method.Elimination(Term)(Judgment).InternalParseError");return{Rule:r,Context:m,Results:U,InternalParseError:X,keywords:["elim"],prettyPrint:(E,D,$,Q,W,H)=>{let C=W!==void 0?W:0,M=E.subgoals.length>0?zt:"",A=xa(E.ruleName,Q),z=xa(E.elimName,Q),Y=E.instantiation.map(re=>n.prettyPrint(re,D,$)).join(" "),P=E.subgoals.map(re=>H(re,D,$,Q,C+2|0)).join(zt);return"elim ("+A+" "+z+" "+Y+") {"+M+P+"}"},subproofs:E=>E.subgoals.map((D,$)=>[$,D]),setSubproof:(E,D,$)=>{let Q=E.subgoals.slice();return Q[D]=$,{ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:Q}},map:(E,D)=>({ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:E.subgoals.map(D)}),substitute:(E,D)=>({ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation.map($=>n.substitute($,D)),subgoals:E.subgoals}),parse:(E,D,$,Q,W,H,C)=>{let M={contents:E.trim()};return Me(M.contents[0],"(")?xc(Uc(M.contents.slice(1).trim(),W),A=>{let z=A[0];return M.contents=A[1],xc(Uc(M.contents.trim(),W),Y=>{M.contents=Y[1];let P=[],re={TAG:"Error",_0:""};for(;re=n.parse(M.contents,$,Q,he(H)),En(re);){let V=Fl(re);P.push(V[0]),M.contents=V[1].trim()}if(!Me(M.contents[0],")"))return{TAG:"Error",_0:") or term expected"};M.contents=M.contents.slice(1).trim();let x=[];if(!Me(M.contents[0],"{"))return{TAG:"Error",_0:"{ expected"};M.contents=M.contents.slice(1).trim();try{for(;Xc(M.contents[0],"}");){let te=C(M.contents,$,Q,W,H);if(te.TAG==="Ok"){let ue=te._0;x.push(ue[0]),M.contents=ue[1].trim()}else throw{RE_EXN_ID:X,_1:te._0,Error:new Error}}if(!Me(M.contents[0],"}"))return{TAG:"Error",_0:"} or subgoal proof expected"};M.contents=M.contents.slice(1).trim();let V=Y[0];return{TAG:"Ok",_0:[{ruleName:z,elimName:V,instantiation:P,subgoals:x},M.contents]}}catch(V){let ee=la(V);if(ee.RE_EXN_ID===X)return{TAG:"Error",_0:ee._1};throw ee}})}):{TAG:"Error",_0:"Expected ("}},check:(E,D,$,Q)=>{let W=xa(E.ruleName,D.localFactNames),H=xa(E.elimName,D.localFactNames),C=f(D,E.ruleName),M=f(D,E.elimName);if(C===void 0)return{TAG:"Error",_0:"Cannot find rule '"+W+"'"};if(M===void 0)return{TAG:"Error",_0:"Cannot find elimination fact '"+H+"'"};if(C.premises.length<=0)return{TAG:"Error",_0:"Rule "+W+" doesn't have any premises"};let A=r.instantiate(C,E.instantiation),z=A.conclusion,Y=A.premises,P=Ze(Y[0],void 0),re=Y.slice(1);if(P.premises.length>0)return{TAG:"Error",_0:"Premise to eliminate in rule "+W+" has non-empty premises"};if(M.premises.length>0)return{TAG:"Error",_0:"Elimination motive (?) "+H+" has non-empty premises"};if(!u.equivalent(u.reduce(P.conclusion),u.reduce(M.conclusion)))return{TAG:"Error",_0:"Premise to eliminate and elimination motive (?) "+H+" do not match"};if(u.equivalent(u.reduce(z),u.reduce($))){if(E.subgoals.length===re.length)return{TAG:"Ok",_0:{ruleName:E.ruleName,elimName:E.elimName,instantiation:E.instantiation,subgoals:Gu(E.subgoals,re,Q)}};let ee=E.subgoals.length.toString(),te=re.length.toString();return{TAG:"Error",_0:"Number of subgoals ("+ee+") doesn't match rule "+W+"'s remaining number ("+te+")"}}let x=u.prettyPrint(z,n.emptyGrammar,D.fixes),V=u.prettyPrint($,n.emptyGrammar,D.fixes);return{TAG:"Error",_0:"Conclusion of rule '"+x+"' doesn't match goal '"+V+"'"}},apply:(E,D,$,Q)=>{let W=Object.entries(E.globalFacts).filter(M=>{let A=M[1];if(A.premises.length<=0)return!1;let z=Ze(A.premises[0],void 0);return z.premises.length===0?z.vars.length===0:!1}),C=E.localFacts.filter(M=>M.premises.length===0?M.vars.length===0:!1).map((M,A)=>{let z={TAG:"Local",index:A},Y=W.flatMap(P=>{let re=P[1],x=r.genSchemaInsts(re,$,E.fixes),V=r.instantiate(re,x),ee={TAG:"Global",name:P[0]},te=[];Gc(No(u.unify(Ze(V.premises[0],void 0).conclusion,M.conclusion,he($)),100),se=>{let ye=r.substituteBare(V,se);Gc(No(u.unify(ye.conclusion,D,he($)),100),Ae=>{let lt=n.mergeSubsts(se,Ae),$t=x.map(Yt=>n.reduce(n.substitute(Yt,lt))),Il=re.premises.slice(1).map(Q),wa={ruleName:ee,elimName:z,instantiation:$t,subgoals:Il};te.push([wa,lt])})});let ue=te.length;if(ue!==1)return ue!==0?[{TAG:"Delay",_0:{TAG:"Ref",_0:ee},_1:()=>te.map((se,ye)=>({TAG:"Action",_0:{TAG:"Text",_0:"option "+(ye+1|0).toString()},_1:se[0],_2:se[1]}))}]:[];let ie=te[0];return[{TAG:"Action",_0:{TAG:"Ref",_0:ee},_1:ie[0],_2:ie[1]}]});return S(A,Y)});return qe(C,{goal:[],assumptions:[]},v)}}}}function $T(n){return u=>{let r=ft(n)(u),m={Rule:ft(n)(u),lookup:(k,E)=>E.TAG==="Local"?k.localFacts[E.index]:k.globalFacts[E.name],facts:k=>{let E=k.localFacts.map(($,Q)=>[{TAG:"Local",index:Q},$]),D=Object.entries(k.globalFacts).map($=>[{TAG:"Global",name:$[0]},$[1]]);return E.concat(D)}},h=(k,E)=>{switch(k.TAG){case"Action":return{TAG:"Action",_0:k._0,_1:E(k._1),_2:k._2};case"Delay":let D=k._1;return{TAG:"Delay",_0:k._0,_1:()=>D().map($=>h($,E))};case"Group":return{TAG:"Group",_0:k._0,_1:k._1.map($=>h($,E))}}};return{Rule:r,Context:m,Results:{map:h,emptyAttached:()=>({goal:[],assumptions:[]}),atGoal:k=>({goal:k,assumptions:[]}),atAssumption:(k,E)=>({goal:[],assumptions:[[k,E]]}),combine:(k,E)=>{let D={};return k.assumptions.concat(E.assumptions).forEach($=>{let Q=$[0].toString(),W=Ne(D[Q],[]);D[Q]=W.concat($[1])}),{goal:k.goal.concat(E.goal),assumptions:Object.entries(D).map($=>[Ze(wl($[0]),void 0),$[1]])}},mapAttached:(k,E)=>({goal:k.goal.map(D=>h(D,E)),assumptions:k.assumptions.map(D=>[D[0],D[1].map($=>h($,E))])})},map:(k,E)=>({rule:k.rule,proof:E(k.proof),show:E(k.show)}),substitute:(k,E)=>({rule:r.substitute(k.rule,E),proof:k.proof,show:k.show}),keywords:["have"],prettyPrint:(k,E,D,$,Q,W)=>{let H=Q!==void 0?Q:0;return"have ".concat(r.prettyPrintInline(k.rule,E,D)).concat(zt).concat(W(k.proof,E,D,$,H)).concat(zt).concat(W(k.show,E,D,$,H))},parse:(k,E,D,$,Q,W,H)=>{let C=r.parseInner(k,D,$,he(W));if(C.TAG!=="Ok")return{TAG:"Error",_0:C._0};let M=C._0,A=H(M[1],D,$,Q,W);if(A.TAG!=="Ok")return{TAG:"Error",_0:A._0};let z=A._0,Y=H(z[1].trim(),D,$,Q,W);if(Y.TAG!=="Ok")return{TAG:"Error",_0:Y._0};let P=Y._0;return{TAG:"Ok",_0:[{rule:M[0],proof:z[0],show:P[0]},P[1]]}},apply:(k,E,D,$)=>({goal:[],assumptions:[]}),subproofs:k=>[["Proof",k.proof],["Show",k.show]],setSubproof:(k,E,D)=>E==="Proof"?{rule:k.rule,proof:D,show:k.show}:{rule:k.rule,proof:k.proof,show:D},check:(k,E,D,$)=>{let Q=$(k.proof,k.rule),W=$(k.show,{vars:[],premises:[k.rule],conclusion:D});return{TAG:"Ok",_0:{rule:k.rule,proof:Q,show:W}}}}}}function MT(n){return u=>(r=>(c=>{let f=ft(n)(u),y={Rule:ft(n)(u),lookup:(D,$)=>$.TAG==="Local"?D.localFacts[$.index]:D.globalFacts[$.name],facts:D=>{let $=D.localFacts.map((W,H)=>[{TAG:"Local",index:H},W]),Q=Object.entries(D.globalFacts).map(W=>[{TAG:"Global",name:W[0]},W[1]]);return $.concat(Q)}},p=(D,$)=>{switch(D.TAG){case"Action":return{TAG:"Action",_0:D._0,_1:$(D._1),_2:D._2};case"Delay":let Q=D._1;return{TAG:"Delay",_0:D._0,_1:()=>Q().map(W=>p(W,$))};case"Group":return{TAG:"Group",_0:D._0,_1:D._1.map(W=>p(W,$))}}},S=()=>({goal:[],assumptions:[]}),v=D=>({goal:D,assumptions:[]}),R=(D,$)=>({goal:[],assumptions:[[D,$]]}),U=(D,$)=>{let Q={};return D.assumptions.concat($.assumptions).forEach(W=>{let H=W[0].toString(),C=Ne(Q[H],[]);Q[H]=C.concat(W[1])}),{goal:D.goal.concat($.goal),assumptions:Object.entries(Q).map(W=>[Ze(wl(W[0]),void 0),W[1]])}},X=(D,$)=>({goal:D.goal.map(Q=>p(Q,$)),assumptions:D.assumptions.map(Q=>[Q[0],Q[1].map(W=>p(W,$))])}),_={map:p,emptyAttached:S,atGoal:v,atAssumption:R,combine:U,mapAttached:X},O=(D,$)=>D.TAG==="First"?{TAG:"First",_0:r.map(D._0,$)}:{TAG:"Second",_0:c.map(D._0,$)},G=(D,$)=>D.TAG==="First"?{TAG:"First",_0:r.substitute(D._0,$)}:{TAG:"Second",_0:c.substitute(D._0,$)},T=r.keywords.concat(c.keywords);return{Rule:f,Context:y,Results:_,map:O,substitute:G,keywords:T,subproofs:D=>D.TAG==="First"?r.subproofs(D._0).map($=>[{TAG:"FirstK",_0:$[0]},$[1]]):c.subproofs(D._0).map($=>[{TAG:"SecondK",_0:$[0]},$[1]]),setSubproof:(D,$,Q)=>D.TAG==="First"?$.TAG==="FirstK"?{TAG:"First",_0:r.setSubproof(D._0,$._0,Q)}:D:$.TAG==="FirstK"?D:{TAG:"Second",_0:c.setSubproof(D._0,$._0,Q)},apply:(D,$,Q,W)=>U(X(r.apply(D,$,Q,W),H=>({TAG:"First",_0:H})),X(c.apply(D,$,Q,W),H=>({TAG:"Second",_0:H}))),check:(D,$,Q,W)=>D.TAG==="First"?Ml(r.check(D._0,$,Q,W),H=>({TAG:"First",_0:H})):Ml(c.check(D._0,$,Q,W),H=>({TAG:"Second",_0:H})),prettyPrint:(D,$,Q,W,H,C)=>{let M=H!==void 0?H:0;return D.TAG==="First"?r.prettyPrint(D._0,$,Q,W,M,C):c.prettyPrint(D._0,$,Q,W,M,C)},parse:(D,$,Q,W,H,C,M)=>r.keywords.indexOf($)>-1?Ml(r.parse(D,$,Q,W,H,C,M),A=>[{TAG:"First",_0:A[0]},A[1]]):Ml(c.parse(D,$,Q,W,H,C,M),A=>[{TAG:"Second",_0:A[0]},A[1]])}}))}function C1(n){return u=>(r=>{let c=ft(n)(u),f=Ru(n)(u),o=Yr(),m=_=>r.keywords.concat(["?"]).find(O=>_.trim().startsWith(O)),h=(_,O)=>({fixes:_.fixes,assumptions:_.assumptions,method:tt(_.method,G=>r.map(r.substitute(G,O),T=>h(T,O))),display:_.display}),y=(_,O,G,T,j)=>{let N=j!==void 0?j:0,B=_.method,J=B!==void 0?r.prettyPrint(ve(B),O,_.fixes.concat(G),T.concat(_.assumptions),N+2|0,y):"?",k=_.display,E;switch(k){case"Full":E="|-";break;case"Tree":E="|:";break;case"Summary":E="|.";break}let D=Dl([_.fixes]);return D.reverse(),"".padStart(N," ").concat(D.map($=>n.prettyPrintMeta($).concat(" ")).join("")).concat(_.assumptions.join(" ")).concat(_.assumptions.length===0?E+" ":" "+E+" ").concat(J)},p=(_,O,G,T,j)=>{let N={TAG:"Error",_0:""},B=_.trim(),J=[];for(;N=n.parseMeta(B),En(N);){let A=Fl(N);B=A[1].trim(),J.unshift(A[0])}let k={TAG:"Error",_0:""},E=[];for(;k=c.parseRuleName(B),En(k);){let A=Fl(k);B=A[1].trim(),E.push(A[0])}let D=B.slice(0,2);if(D!=="|-"&&D!=="|:"&&D!=="|.")return console.log([J,E]),{TAG:"Error",_0:"expected turnstile or rule name".concat(B)};let $;switch(D){case"|.":$="Summary";break;case"|:":$="Tree";break;default:$="Full"}B=B.trim().slice(2).trim();let Q=J.concat(G),W=T.concat(E),H=m(B);if(H===void 0)return{TAG:"Error",_0:"Expected keyword"};if(H==="?")return{TAG:"Ok",_0:[{fixes:J,assumptions:E,method:void 0,display:$},B.slice(1)]};B=B.slice(H.length);let C=r.parse(B,H,O,Q,W,j,p);if(C.TAG!=="Ok")return{TAG:"Error",_0:C._0};let M=C._0;return{TAG:"Ok",_0:[{fixes:J,assumptions:E,method:he(M[0]),display:$},M[1]]}},S=(_,O,G)=>{let T=O.fixes.length,j=G.vars.length;if(O.fixes.length!==G.vars.length)return{TAG:"Error",_0:"Proof introduces a different number ("+T.toString()+") of variables than the rule ("+j.toString()+")"};let N=O.assumptions.length,B=G.premises.length;return N===B?{TAG:"Ok",_0:{fixes:O.fixes.concat(_.fixes),localFacts:_.localFacts.map(J=>c.upshift(J,G.vars.length,void 0)).concat(G.premises),localFactNames:_.localFactNames.concat(O.assumptions),globalFacts:_.globalFacts}}:{TAG:"Error",_0:"Proof introduces a different number ("+N.toString()+") of assumptions than the rule ("+B.toString()+")"}},v=_=>_.TAG==="Checked"?{TAG:"Checked",fixes:_.fixes,assumptions:_.assumptions,method:"Goal",rule:_.rule,display:_.display}:_,R=_=>{if(_.TAG!=="Checked")return _.raw;let O=_.method,G;return G=typeof O!="object"?void 0:he(r.map(O._0,R)),{fixes:_.fixes,assumptions:_.assumptions,method:G,display:_.display}},U=(_,O,G)=>{let T=S(_,O,G);if(T.TAG!=="Ok")return{TAG:"ProofError",raw:O,rule:G,msg:T._0};let j=T._0,N=O.method;if(N===void 0)return{TAG:"Checked",fixes:O.fixes,assumptions:O.assumptions,method:"Goal",rule:G,display:O.display};let B=r.check(ve(N),j,G.conclusion,(J,k)=>U(j,J,k));return B.TAG==="Ok"?{TAG:"Checked",fixes:O.fixes,assumptions:O.assumptions,method:{TAG:"Do",_0:B._0},rule:G,display:O.display}:{TAG:"ProofError",raw:O,rule:G,msg:B._0}};return{Rule:c,Context:f,Results:o,parseKeyword:m,substitute:h,prettyPrint:y,parse:p,enter:S,toGoal:v,uncheck:R,check:U,substituteChecked:(_,O,G)=>_.TAG==="Checked"?U(O,h(R(_),G),c.substitute(_.rule,G)):{TAG:"ProofError",raw:h(_.raw,G),rule:c.substitute(_.rule,G),msg:_.msg}}})}function k1(n){return u=>({make:c=>{let f=c.scope.map((o,m)=>{let h=c.editable;return b.jsx(xe.Fragment,{children:h!==void 0?u.makeEditableMeta(o,y=>h(Rc(c.scope,m,y))):u.makeMeta(o)},String(m))});return f.reverse(),f.length>0?b.jsx("span",{children:f,className:"rule-binders"}):null}})}function Du(n){return u=>(r=>{let c=ft(n)(u),f=k1()(r.TermView),o=_=>{let O=_.rule,G=O.premises,T=O.vars,j=T.concat(Et.getOr(_.scope,[]));return b.jsxs("span",{children:[b.jsx("span",{children:_.children,className:"rule-rulename"}),G.length>0?b.jsx("span",{children:"(",className:"symbol symbol-turnstile symbol-bold"}):"",b.jsx(f.make,{scope:T,editable:void 0}),G.map((N,B)=>b.jsx("span",{children:xe.createElement(o,bm({rule:N,style:_.style,grammar:_.grammar,scope:j,children:""},B)),className:"rule-context"},String(B))).flatMap((N,B)=>B===0?[N]:[b.jsx("span",{children:",",className:"symbol symbol-bold symbol-comma"},String(-B|0)),N]),G.length>0?b.jsx("span",{children:"⊢",className:"symbol symbol-turnstile symbol-bold"}):"",b.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:j}),G.length>0?b.jsx("span",{children:")",className:"symbol symbol-turnstile symbol-bold"}):""],className:"inline-rule"})},m={make:o},h=_=>({make:G=>{if(G.rule.premises.length===0)return o(G);let T=G.rule,j=T.premises,N=T.vars,B=N.concat(Et.getOr(G.scope,[]));return b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(f.make,{scope:N,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:3}),j.map((J,k)=>b.jsx("td",{children:b.jsx(_.make,{rule:J,style:G.style,grammar:G.grammar,scope:B,children:""},String(k)),className:"rule-cell rule-premise"},String(k))),b.jsx("td",{children:b.jsx("span",{children:G.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:3})]}),b.jsx("tr",{children:b.jsx("td",{children:"⋮",className:"rule-cell",colSpan:j.length+1|0})}),b.jsx("tr",{children:b.jsx("td",{children:b.jsx(r.make,{judgment:T.conclusion,grammar:G.grammar,scope:B}),className:"rule-cell rule-hypothetical-conclusion",colSpan:j.length})})]}),className:"inference"})}}),y=_=>({make:G=>{let T=G.rule,j=T.premises,N=T.vars,B=N.concat(Et.getOr(G.scope,[]));return b.jsx("div",{children:b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(f.make,{scope:N,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),j.length===0?b.jsx("td",{className:"rule-cell rule-spacer"}):j.map((J,k)=>b.jsx("td",{children:b.jsx(_.make,{rule:J,style:G.style,grammar:G.grammar,scope:B,children:""},String(k)),className:"rule-cell rule-premise"},String(k))),b.jsx("td",{children:b.jsx("span",{children:G.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),b.jsx("tr",{children:b.jsx("td",{children:b.jsx(r.make,{judgment:T.conclusion,grammar:G.grammar,scope:B}),className:"rule-cell rule-conclusion",colSpan:j.length})})]}),className:"inference"}),className:"axiom"})}}),p=_=>{if(_.rule.premises.length===0)return o(_);let O=_.rule,G=O.premises,T=O.vars,j=T.concat(Et.getOr(_.scope,[]));return b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(f.make,{scope:T,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:3}),G.map((N,B)=>b.jsx("td",{children:b.jsx(o,{rule:N,style:_.style,grammar:_.grammar,scope:j,children:""},String(B)),className:"rule-cell rule-premise"},String(B))),b.jsx("td",{children:b.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:3})]}),b.jsx("tr",{children:b.jsx("td",{children:"⋮",className:"rule-cell",colSpan:G.length+1|0})}),b.jsx("tr",{children:b.jsx("td",{children:b.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:j}),className:"rule-cell rule-hypothetical-conclusion",colSpan:G.length})})]}),className:"inference"})},S=_=>{let O=_.rule,G=O.premises,T=O.vars,j=T.concat(Et.getOr(_.scope,[]));return b.jsx("div",{children:b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(f.make,{scope:T,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),G.length===0?b.jsx("td",{className:"rule-cell rule-spacer"}):G.map((N,B)=>b.jsx("td",{children:b.jsx(p,{rule:N,style:_.style,grammar:_.grammar,scope:j,children:""},String(B)),className:"rule-cell rule-premise"},String(B))),b.jsx("td",{children:b.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),b.jsx("tr",{children:b.jsx("td",{children:b.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:j}),className:"rule-cell rule-conclusion",colSpan:G.length})})]}),className:"inference"}),className:"axiom"})},v={make:S},R=_=>{let O=_.rule,G=O.premises,T=O.vars,j=T.concat(Et.getOr(_.scope,[]));return b.jsx("div",{children:b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(f.make,{scope:T,editable:void 0}),className:"rule-cell rule-binderbox",rowSpan:2}),G.length===0?b.jsx("td",{className:"rule-cell rule-spacer"}):G.map((N,B)=>b.jsx("td",{children:b.jsx(o,{rule:N,style:_.style,grammar:_.grammar,scope:j,children:""},String(B)),className:"rule-cell rule-premise"},String(B))),b.jsx("td",{children:b.jsx("span",{children:_.children,className:"rule-rulename"}),className:"rule-cell rule-rulebox",rowSpan:2})]}),b.jsx("tr",{children:b.jsx("td",{children:b.jsx(r.make,{judgment:O.conclusion,grammar:_.grammar,scope:j}),className:"rule-cell rule-conclusion",colSpan:G.length})})]}),className:"inference"}),className:"axiom"})};return{Rule:c,ScopeView:f,Inline:m,Hypothetical:h,TopLevel:y,Gentzen:v,Hybrid:{make:R},make:_=>{switch(_.style){case"Gentzen":return S(_);case"Linear":return o(_);case"Hybrid":return R(_)}}}})}function $u(n){return u=>{let r=ft(n)(u),c={},f=n.emptyGrammar;return{Rule:r,empty:{facts:c,ruleStyle:void 0,grammar:f},combine:(h,y)=>{let p=Object.assign(Object.assign({},h.facts),y.facts),S=um(y.ruleStyle,h.ruleStyle,R=>R),v=n.combineGrammars(h.grammar,y.grammar);return{facts:p,ruleStyle:S,grammar:v}}}}}function wT(n){let u=n.onConfirm,r=n.label,c=xe.useState(()=>!1),f=c[1],o=xe.useState(()=>r),m=o[1],h=o[0],y=xe.useState(()=>r),p=y[1],S=y[0],v=xe.useState(()=>{}),R=v[1],U=v[0],X=G=>{let T=u(S);if(T.TAG==="Ok")return m(N=>S),R(N=>{}),f(N=>!1);let j=T._0;p(N=>h),R(N=>j)},_=G=>{p(T=>h),R(T=>{}),f(T=>!1)},O=G=>R(T=>{});return b.jsx("div",{children:c[0]?b.jsxs("div",{children:[b.jsxs("div",{children:[b.jsx("input",{className:"auto-input",autoFocus:!0,size:Math.max(1,S.length),type:"text",value:S,onKeyDown:G=>{let T=G.key;return T==="Enter"?X():T==="Escape"?_():void 0},onChange:G=>p(T=>G.target.value)}),b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-tick",onClick:X}),b.jsx("span",{className:"editor-button button-icon button-icon-red typcn typcn-times",onClick:_})],className:"controls-row"}),U!==void 0?b.jsxs("div",{children:[b.jsx("span",{children:U}),b.jsx("span",{className:"editor-button button-icon button-icon-grey typcn typcn-times",onClick:O})],className:"error-box"}):null],className:"edit-wrapper"}):b.jsx("span",{children:h,className:"label-span",onClick:G=>{p(T=>h),R(T=>{}),f(T=>!0)}}),className:"editable-container"})}let qc={make:wT};var So={exports:{}},Gt={};var ay;function zT(){if(ay)return Gt;ay=1;var n=Dm();function u(y){var p="https://react.dev/errors/"+y;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(u){console.error(u)}}return n(),So.exports=zT(),So.exports}var CT=B1();function Hc(n){let u=n.ruleRef,r=n.assms;if(u.TAG==="Local"){let o=u.index,m=r[o];return m===void 0?b.jsx("span",{children:"#"+String(o),className:"rule-ref rule-ref--invalid"}):Uy(r,-1,(p,S,v)=>S===m?v:p)!==o?b.jsxs("span",{children:[m,b.jsx("span",{children:"@"+String(o),className:"rule-ref__index"})],className:"rule-ref rule-rulename-local rule-ref-shadowed"}):b.jsx("span",{children:m,className:"rule-ref rule-rulename-local"})}let c=u.name;return cA(r,o=>o===c)?b.jsx("span",{children:c,className:"rule-ref rule-rulename-global rule-ref--shadowed"}):b.jsx("span",{children:c,className:"rule-ref rule-rulename-global"})}let Tu={make:Hc};function U1(n){return u=>{let r=RT(n)(u),c=o=>b.jsx(Hc,{assms:o.ctx.localFactNames,ruleRef:o.method.ruleName});return{Method:r,summary:c,make:o=>(m=>b.jsxs("div",{children:[b.jsx("span",{className:"typcn typcn-media-play"}),c(m),b.jsx("ul",{children:m.method.subgoals.map((h,y)=>b.jsx("li",{children:xe.createElement(o,{proof:h,ctx:m.ctx,ruleStyle:m.ruleStyle,grammar:m.grammar,gen:m.gen,onChange:(p,S)=>m.onChange(r.setSubproof(m.method,y,p),S)})},String(y))),className:"subgoals"})]}))}}}function q1(n){return u=>{let r=DT(n)(u),c=o=>b.jsxs(b.Fragment,{children:[b.jsx("span",{children:b.jsx(Hc,{assms:o.ctx.localFactNames,ruleRef:o.method.ruleName}),className:"rule-rulename-elim"}),b.jsx("sup",{children:b.jsx(Hc,{assms:o.ctx.localFactNames,ruleRef:o.method.elimName})})]});return{Method:r,summary:c,make:o=>(m=>b.jsxs("div",{children:[b.jsx("span",{className:"typcn typcn-media-play"}),c(m),b.jsx("ul",{children:m.method.subgoals.map((h,y)=>b.jsx("li",{children:xe.createElement(o,{proof:h,ctx:m.ctx,ruleStyle:m.ruleStyle,grammar:m.grammar,gen:m.gen,onChange:(p,S)=>m.onChange(r.setSubproof(m.method,y,p),S)})},String(y))),className:"subgoals"})]}))}}}function H1(n){return u=>(r=>{let c=$T(n)(u),f=h=>b.jsx("span",{children:"lemma"}),o=Du(n)(u)(r);return{Method:c,summary:f,RuleView:o,make:h=>(y=>b.jsxs("div",{children:[b.jsx("b",{children:"have "}),b.jsx(o.make,{rule:y.method.rule,style:y.ruleStyle,grammar:y.grammar,scope:y.ctx.fixes,children:null}),xe.createElement(h,{proof:y.method.proof,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(p,S)=>{let v=y.method;y.onChange({rule:v.rule,proof:p,show:v.show},S)}}),xe.createElement(h,{proof:y.method.show,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(p,S)=>{let v=y.method;y.onChange({rule:v.rule,proof:v.proof,show:p},S)}})]}))}})}function Ma(n){return u=>(r=>(c=>({Method:MT(n)(u)(r.Method)(c.Method),summary:h=>{let y=h.method;return y.TAG==="First"?r.summary({method:y._0,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(p,S)=>h.onChange({TAG:"First",_0:p},S)}):c.summary({method:y._0,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(p,S)=>h.onChange({TAG:"Second",_0:p},S)})},make:h=>(y=>{let p=y.method;return p.TAG==="First"?r.make(h)({method:p._0,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(S,v)=>y.onChange({TAG:"First",_0:S},v)}):c.make(h)({method:p._0,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(S,v)=>y.onChange({TAG:"Second",_0:S},v)})})})))}let Lo=xe.createContext({sidebarRef:{current:null}});function kT(n){let u={sidebarRef:n.sidebarRef};return xe.createElement(Lo.Provider,{value:u,children:n.children})}let BT=kT;function UT(n){return u=>(r=>(c=>{let f=Du(n)(u)(r),o=ft(n)(u),m=k1()(r.TermView),h=C1(n)(u)(c.Method),y=Yr(),p=H=>{let C=xe.useState(()=>[{label:void 0,nodes:H.initialNodes}]),M=C[1],A=C[0],z=V=>M(ee=>ee.length>1?ee.slice(0,ee.length-1|0):ee),Y=Ul(A,A.length-1|0),P=(V,ee)=>{let te=ee!==void 0?ee:!1;if(typeof V!="object")return b.jsx("span",{children:"Assumptions",className:"assumptions-label"});switch(V.TAG){case"Text":return V._0;case"Ref":return b.jsx(Tu.make,{assms:H.ctx.localFactNames,ruleRef:V._0});case"RefRule":let ue=V._0;if(te)return b.jsx(Tu.make,{assms:H.ctx.localFactNames,ruleRef:ue});let ie=c.Method.Context.lookup(H.ctx,ue);return ie!==void 0?b.jsx(f.make,{rule:ie,style:H.ruleStyle,grammar:H.grammar,scope:H.ctx.fixes,children:b.jsx(Tu.make,{assms:H.ctx.localFactNames,ruleRef:ue})}):"Unknown rule!";case"Seq":return V._0.map(se=>P(se,te))}},re=(V,ee)=>{switch(V.TAG){case"Action":let te=V._2,ue=V._1;return b.jsx("button",{children:P(V._0,void 0),tabIndex:0,onClick:ye=>H.onApply(ue,te)},ee.toString());case"Delay":let ie=V._1,se=V._0;return b.jsx("button",{children:P(se,void 0),tabIndex:0,onClick:ye=>{let Ae=ie();M(lt=>lt.concat([{label:se,nodes:Ae}]))}},ee.toString());case"Group":return b.jsxs("div",{children:[b.jsx("div",{children:P(V._0,void 0),className:"results-group-label"}),b.jsx("div",{children:V._1.map(re),className:"results-group-items"})],className:"results-group"},ee.toString())}},x=yt(A,V=>V.label);return b.jsxs("div",{children:[b.jsx("div",{children:x.map((V,ee)=>{let te=ee===(x.length-1|0);return b.jsxs("div",{children:[P(V,!0),te?b.jsx("span",{className:"breadcrumb-close typcn typcn-times"}):null],className:"breadcrumb-heading "+(te?"breadcrumb-heading-current":""),tabIndex:te?0:-1,onClick:te?z:ue=>{}},ee.toString())}),className:"breadcrumbs"}),b.jsxs("div",{children:[Y.nodes.map(re),b.jsx("div",{className:"sidebar-rule"})],className:"menu-options"})],className:"drill-down-container"})},S={make:p},v=H=>[{TAG:"Group",_0:"Assumptions",_1:H.attached.assumptions.map(M=>{let A=M[1];return{TAG:"Delay",_0:{TAG:"RefRule",_0:{TAG:"Local",index:M[0]}},_1:()=>A}})}].concat(H.attached.goal),R=H=>b.jsxs("div",{children:[b.jsxs("div",{children:[b.jsx(m.make,{scope:H.ctx.fixes,editable:void 0}),b.jsx("div",{children:b.jsx(r.make,{judgment:H.goal,grammar:H.grammar,scope:H.ctx.fixes}),className:"sidebar-goal-judgment"})],className:"sidebar-goal"}),b.jsx(p,{ctx:H.ctx,grammar:H.grammar,ruleStyle:H.ruleStyle,initialNodes:v(H),onApply:H.onApply})],className:"sidebar-content resizable-panel"}),U={topLevelNodes:v,make:R},X=H=>b.jsxs("span",{children:[b.jsx("div",{children:b.jsx("span",{className:"typcn typcn-arrow-maximise"}),className:"display-tab display-tab-right "+(H.display==="Full"?"display-tab-selected":""),onClick:C=>H.onChange("Full")}),b.jsx("div",{children:b.jsx("span",{className:"typcn typcn-tree"}),className:"display-tab "+(H.display==="Tree"?"display-tab-selected":""),onClick:C=>H.onChange("Tree")}),b.jsx("div",{children:b.jsx("span",{className:"typcn typcn-arrow-minimise"}),className:"display-tab display-tab-left "+(H.display==="Summary"?"display-tab-selected":""),onClick:C=>H.onChange("Summary")})]}),_={make:X},O=xe.createContext({requestFocusIndex:H=>{}}),T={make:O.Provider},j={context:O,Provider:T},N=H=>{let C=xe.useContext(Lo),A=xe.useContext(O).requestFocusIndex,z=xe.useState(()=>!1),Y=z[1],P=xe.useId(),re=xe.useRef(null),x=ue=>{let ie=ue.relatedTarget;if(ie==null)return;if(!im(am(ie.closest(".outside-click-group-"+P))))return Y(ye=>!1)},V=xe.useCallback(ue=>{if(console.log("setRef called",ue),re.current=ue,ue==null)return;let ie=se=>Y(ye=>!1);return ue.addEventListener("outsideclick",ie),()=>{ue.removeEventListener("outsideclick",ie)}},[]),ee=C.sidebarRef.current,te;if(ee==null)te=null;else{let ue=c.Method.apply(H.ctx,H.conclusion,H.gen,ie=>h.check(H.ctx,{fixes:n.freshenMetas(H.ctx.fixes,ie.vars),assumptions:Ga(ie.premises.length,se=>(se+H.ctx.localFacts.length|0).toString()),method:void 0,display:H.display},ie));te=CT.createPortal(b.jsx("div",{children:b.jsx(R,{ctx:H.ctx,goal:H.conclusion,grammar:H.grammar,ruleStyle:H.ruleStyle,attached:ue,onApply:(ie,se)=>{let ye=re.current;ye!=null&&A(computeGoalIndex(ye)),H.onApply(ie,se)}}),className:"outside-click-group-"+P,onBlur:x}),ee)}return b.jsx("div",{children:z[0]?b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"button-icon button-icon-blue typcn typcn-location"}),te]}):b.jsx("span",{className:"button-icon button-icon-blue typcn typcn-location-outline"}),ref:he(V),className:"proof-goal outside-click-group-"+P,tabIndex:0,onFocus:ue=>{Y(ie=>!0),ue.stopPropagation()},onBlur:x})},B={make:N},J=H=>{let C=H.proof;if(C.TAG!=="Checked")return b.jsx("div",{children:C.msg,className:"error"});let M=C.display,A=C.rule,z=C.method,Y=C.assumptions,P=C.fixes,re=h.enter(H.ctx,{fixes:P,assumptions:Y,method:void 0,display:M},A);if(re.TAG!=="Ok")return b.jsx("div",{children:"context mismatch",className:"error"});let x=re._0;if(typeof z!="object")return b.jsx(N,{ctx:x,conclusion:A.conclusion,display:M,grammar:H.grammar,gen:H.gen,ruleStyle:H.ruleStyle,onApply:(te,ue)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:te},rule:A,display:M},ue)});let V=z._0,ee=c.Method.subproofs(V);return b.jsxs(b.Fragment,{children:[c.summary({method:V,ctx:x,ruleStyle:H.ruleStyle,grammar:H.grammar,gen:H.gen,onChange:(te,ue)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:te},rule:A,display:M},ue)}),ee.length===0?null:ee.map((te,ue)=>{let ie=te[0];return b.jsxs("span",{children:[ue===0?"(":",",J({proof:te[1],ctx:x,ruleStyle:H.ruleStyle,grammar:H.grammar,gen:H.gen,onChange:(se,ye)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:c.Method.setSubproof(V,ie,se)},rule:A,display:M},ye)}),ue===(ee.length-1|0)?")":null],className:"proof-summary-node"},String(ue))})]})},k={make:J},E=H=>{let C=H.proof;if(C.TAG!=="Checked")return b.jsx("div",{children:C.msg,className:"error"});let M=C.display,A=C.rule,z=C.method,Y=C.assumptions,P=C.fixes,re=h.enter(H.ctx,{fixes:P,assumptions:Y,method:void 0,display:M},A);if(re.TAG!=="Ok")return b.jsx("div",{children:"context mismatch",className:"error"});let x=re._0,V=0,ee;if(typeof z!="object")V=1,ee=b.jsxs(b.Fragment,{children:[b.jsx("td",{children:b.jsx(N,{ctx:x,conclusion:A.conclusion,display:M,grammar:H.grammar,gen:H.gen,ruleStyle:H.ruleStyle,onApply:(ie,se)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:ie},rule:A,display:M},se)}),className:"rule-cell rule-premise"}),b.jsx("td",{children:"?",className:"rule-cell rule-rulebox",rowSpan:3})]});else{let ie=z._0,se=c.Method.subproofs(ie);V=se.length,ee=b.jsxs(b.Fragment,{children:[se.length===0?b.jsx("td",{className:"rule-cell rule-spacer"}):se.map((ye,Ae)=>{let lt=ye[0];return b.jsx("td",{children:E({proof:ye[1],ctx:x,ruleStyle:H.ruleStyle,grammar:H.grammar,gen:H.gen,onChange:($t,Il)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:c.Method.setSubproof(ie,lt,$t)},rule:A,display:M},Il)}),className:"rule-cell rule-premise"},String(Ae))}),b.jsxs("td",{children:[b.jsx("span",{children:c.summary({method:ie,ctx:x,ruleStyle:H.ruleStyle,grammar:H.grammar,gen:H.gen,onChange:(ye,Ae)=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:{TAG:"Do",_0:ye},rule:A,display:M},Ae)}),className:"rule-rulename"}),b.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash",onClick:ye=>H.onChange(h.toGoal(H.proof),n.makeSubst())})],className:"rule-cell rule-rulebox",rowSpan:3})]})}let te={contents:0},ue=Gu(Y,A.premises,(ie,se)=>{te.contents=te.contents+1|0;let ye=Ae=>{let lt=o.parseRuleName(Ae.trim());if(lt.TAG!=="Ok")return{TAG:"Error",_0:lt._0};let $t=lt._0[1];return $t!==""?{TAG:"Error",_0:"Trailing characters ".concat($t)}:(H.onChange({TAG:"Checked",fixes:P,assumptions:Rc(Y,te.contents-1|0,Ae),method:z,rule:A,display:M},n.makeSubst()),{TAG:"Ok",_0:void 0})};return b.jsxs("span",{children:[te.contents>1?b.jsx("span",{children:",",className:"term-symbol symbol-comma"}):null,b.jsx(f.make,{rule:se,style:"Linear",grammar:H.grammar,scope:x.fixes,children:b.jsx("span",{children:b.jsx(qc.make,{label:ie,onConfirm:ye}),className:"rule-rulename-local"})})],className:"proof-tree-assumption"},(te.contents-1|0).toString())});return b.jsx("table",{children:b.jsxs("tbody",{children:[b.jsxs("tr",{children:[b.jsx("td",{children:b.jsx(m.make,{scope:P,editable:ie=>H.onChange({TAG:"Checked",fixes:ie,assumptions:Y,method:z,rule:A,display:M},n.makeSubst())}),className:"rule-cell rule-binderbox",rowSpan:3}),ee]}),b.jsx("tr",{children:b.jsxs("td",{children:[te.contents>0?b.jsxs(b.Fragment,{children:[ue,b.jsx("span",{children:"⊢",className:"term-symbol symbol-turnstile"})]}):null,b.jsx(r.make,{judgment:A.conclusion,grammar:H.grammar,scope:x.fixes})],className:"rule-cell rule-conclusion",colSpan:V})})]}),className:"inference"})},D={make:E},$=(H,C)=>{xe.useContext(Lo),xe.useState(()=>!1);let M=H.proof;if(M.TAG!=="Checked")return b.jsx("div",{children:M.msg,className:"error"});let A=M.display,z=M.rule,Y=M.method,P=M.assumptions,re=M.fixes,x=h.enter(H.ctx,{fixes:re,assumptions:P,method:void 0,display:A},z);if(x.TAG!=="Ok")return b.jsx("div",{children:"context mismatch",className:"error"});let V=x._0,ee;if(P.length!==0){let ue={contents:0};ee=b.jsxs(b.Fragment,{children:[b.jsx("span",{children:re.length!==0?"where:":"Assuming:",className:"proof-text"}),b.jsx("ul",{children:Gu(P,z.premises,(ie,se)=>{ue.contents=ue.contents+1|0;let ye=Ae=>{let lt=o.parseRuleName(Ae.trim());if(lt.TAG!=="Ok")return{TAG:"Error",_0:lt._0};let $t=lt._0[1];return $t!==""?{TAG:"Error",_0:"Trailing characters ".concat($t)}:(H.onChange({TAG:"Checked",fixes:re,assumptions:Rc(P,ue.contents-1|0,Ae),method:Y,rule:z,display:A},n.makeSubst()),{TAG:"Ok",_0:void 0})};return b.jsx("li",{children:b.jsx(f.make,{rule:se,style:H.ruleStyle,grammar:H.grammar,scope:V.fixes,children:b.jsx("span",{children:b.jsx(qc.make,{label:ie,onConfirm:ye}),className:"rule-rulename-local"})})},(ue.contents-1|0).toString())}),className:"proof-assumptions proof-assumptions-".concat(String(H.ruleStyle))})]})}else ee=b.jsx(b.Fragment,{});let te;return te=typeof Y!="object"?b.jsx(N,{ctx:V,conclusion:z.conclusion,display:A,grammar:H.grammar,gen:H.gen,ruleStyle:H.ruleStyle,onApply:(ue,ie)=>H.onChange({TAG:"Checked",fixes:re,assumptions:P,method:{TAG:"Do",_0:ue},rule:z,display:A},ie)}):b.jsxs(b.Fragment,{children:[b.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash floating-delete",onClick:ue=>H.onChange(h.toGoal(H.proof),n.makeSubst())}),xe.createElement(c.make(ue=>C({proof:ue.proof,ctx:ue.ctx,ruleStyle:ue.ruleStyle,grammar:ue.grammar,gen:ue.gen,onChange:ue.onChange})),{method:Y._0,ctx:V,ruleStyle:H.ruleStyle,grammar:H.grammar,gen:H.gen,onChange:(ue,ie)=>H.onChange({TAG:"Checked",fixes:re,assumptions:P,method:{TAG:"Do",_0:ue},rule:z,display:A},ie)})]}),b.jsxs("div",{children:[re.length!==0?b.jsxs(b.Fragment,{children:[b.jsx("span",{children:"For any ",className:"proof-text"}),b.jsx(m.make,{scope:re,editable:ue=>H.onChange({TAG:"Checked",fixes:ue,assumptions:P,method:Y,rule:z,display:A},n.makeSubst())})]}):b.jsx(b.Fragment,{}),ee,b.jsxs("div",{children:[b.jsx("span",{children:"Show: ",className:"proof-text"}),b.jsx("span",{children:b.jsx(r.make,{judgment:z.conclusion,grammar:H.grammar,scope:V.fixes}),className:"proof-judgement"}),te],className:"proof-show"})]})},Q={make:$},W=H=>{let C=H.proof;if(C.TAG!=="Checked")return b.jsx("div",{children:C.msg,className:"error"});let M=C.display,A=C.rule,z=C.method,Y=C.assumptions,P=C.fixes,re=V=>H.onChange({TAG:"Checked",fixes:P,assumptions:Y,method:z,rule:A,display:V},n.makeSubst()),x;switch(M){case"Full":x=$(H,W);break;case"Tree":x=b.jsx("div",{children:E(H),className:"proof-tree"});break;case"Summary":x=b.jsxs("div",{children:[J(H),b.jsx("span",{className:"button-icon button-icon-red typcn typcn-trash",onClick:V=>H.onChange(h.toGoal(H.proof),n.makeSubst())})],className:"proof-summary"});break}return b.jsxs("div",{children:[b.jsx(X,{display:M,onChange:re}),x],className:"proof-step"})};return{linearStyle:"Linear",RuleView:f,Rule:o,ScopeView:m,Proof:h,Results:y,ResultsView:S,SidebarView:U,DisplayModeTabs:_,FocusNextContext:j,GoalButton:B,SummaryView:k,TreeView:D,FullView:Q,make:W}}))}function V1(n){return u=>(r=>(c=>{let f=ft(n)(u),o=C1(n)(u)(c.Method),m=Ru(n)(u),h=UT(n)(u)(r)(c),y=Du(n)(u)(r),p=$u(n)(u);return{Rule:f,Proof:o,Context:m,ProofView:h,RuleView:y,Ports:p,serialise:(U,X)=>f.prettyPrintTopLevel(U.rule,U.name,X.grammar,void 0).concat(` -`).concat(o.prettyPrint(k.proof,Q.grammar,[],[],void 0)),deserialise:(k,Q)=>{let _=n.makeGen(),O=k,j=f.parseTopLevel(O,Q.grammar,he(_),[]);if(j.TAG!=="Ok")return{TAG:"Error",_0:j._0};let S=j._0,R=S[0],D=R[1],C=R[0],F=o.parse(S[1],Q.grammar,[],[],_);if(F.TAG!=="Ok")return{TAG:"Error",_0:F._0};let B=F._0,E=B[1];return E.trim().length>0?{TAG:"Error",_0:"Trailing input: ".concat(E)}:{TAG:"Ok",_0:[{name:D,rule:C,proof:B[0],gen:_,substFailed:void 0},{facts:Object.fromEntries([[D,C]]),ruleStyle:void 0,grammar:n.emptyGrammar}]}},make:k=>{let Q=Ee(k.imports.ruleStyle,"Hybrid"),_=[],O=[],j=[],S=k.imports.facts,R={fixes:_,localFacts:O,localFactNames:j,globalFacts:S},D=o.check(R,k.content.proof,k.content.rule),C=Re.useRef(null),F=(E,b)=>{let N=o.substitute(o.uncheck(E),b),H;try{o.check(R,N,k.content.rule);let L=k.content;H={name:L.name,rule:L.rule,proof:N,gen:L.gen,substFailed:void 0}}catch(L){let w=la(L);if(w.RE_EXN_ID===Hr){let V=k.content;H={name:V.name,rule:V.rule,proof:V.proof,gen:V.gen,substFailed:w._1}}else throw w}k.onChange(H,{facts:Object.fromEntries([[k.content.name,k.content.rule]]),ruleStyle:void 0,grammar:n.emptyGrammar})},B=k.content.substFailed;return v.jsxs(kT,{children:[v.jsx(y.make,{rule:k.content.rule,style:Q,grammar:k.imports.grammar,scope:[],children:v.jsx("span",{children:k.content.name,className:"rule-rulename-global"})}),v.jsx("h4",{children:"Proof"}),v.jsx(h.make,{proof:D,ctx:R,ruleStyle:Q,grammar:k.imports.grammar,gen:k.content.gen,onChange:F}),B!==void 0?B:null,v.jsx("div",{ref:he(C),className:"sidebar watch-outside-click"})],sidebarRef:C})}}}))}function UT(n){return u=>(r=>{let c=st(n)(u),f=Du(n)(u)(r),o=$u(n)(u);return{Rule:c,RuleView:f,Ports:o,serialise:(p,T)=>Object.entries(p.rules).map(A=>c.prettyPrintTopLevel(A[1],A[0],T.grammar,void 0)).join(` -`),deserialise:(p,T)=>{let A=p,$=!0,k={},Q={TAG:"Error",_0:"impossible"};for(;$;){let _=c.parseTopLevel(A,T.grammar,void 0,[]);if(_.TAG==="Ok"){let O=_._0,j=O[1],S=O[0],R=S[1];R.trim()===""?($=!1,Q={TAG:"Error",_0:"Rule given with no name"}):(k[R]=S[0],j.trim()===""?($=!1,Q={TAG:"Ok",_0:k}):A=j)}else $=!1,Q={TAG:"Error",_0:_._0}}return Rl(Q,_=>[{rules:_},{facts:_,ruleStyle:void 0,grammar:n.emptyGrammar}])},make:p=>v.jsx("div",{children:Object.entries(p.content.rules).map((T,A)=>v.jsx(f.make,{rule:T[1],style:Ee(p.imports.ruleStyle,"Hybrid"),grammar:p.imports.grammar,scope:[],children:v.jsx("span",{children:T[0],className:"rule-rulename-global"})},String(A))),className:"axiom-set axiom-set-".concat(String(Ee(p.imports.ruleStyle,"Hybrid")))})}})}function Mu(n){let u=n.Ports,r=(o,m)=>o.TAG==="Ok"?n.serialise(o._0,m):o._0[1],c=(o,m)=>{let h=n.deserialise(o,m);if(h.TAG!=="Ok")return{TAG:"Ok",_0:[{TAG:"Error",_0:[h._0,o]},u.empty]};let y=h._0;return{TAG:"Ok",_0:[{TAG:"Ok",_0:y[0]},y[1]]}};return{Ports:u,serialise:r,deserialise:c,make:o=>{let m=Re.useState(()=>!1),h=m[1],y=Re.useState(()=>r(o.content,o.imports)),p=y[1],T=y[0],A=Q=>{let O=Q.target.value;p(j=>O)},$=Q=>{let _=c(T,o.imports);if(_.TAG==="Ok"){let O=_._0;o.onChange(O[0],he(O[1]))}else console.log("Impossible happened");h(O=>!1)};if(m[0])return v.jsxs("div",{children:[v.jsx("textarea",{className:"editor-textArea",value:T,onChange:A}),v.jsx("div",{children:v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-tick",onClick:$}),className:"editor-controls"})]});let k=o.content;return k.TAG==="Ok"?v.jsxs("div",{children:[v.jsx(n.make,{content:k._0,imports:o.imports,onChange:(Q,_)=>o.onChange({TAG:"Ok",_0:Q},_),reset:o.reset}),v.jsxs("div",{children:[v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-edit",onClick:Q=>{p(_=>r(o.content,o.imports)),h(_=>!0)}}),v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-arrow-loop",onClick:Q=>o.reset()})],className:"editor-controls"})]}):v.jsxs("div",{children:[v.jsx("div",{children:k._0[0],className:"error"}),v.jsxs("div",{children:[v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-edit",onClick:Q=>{p(_=>r(o.content,o.imports)),h(_=>!0)}}),v.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-arrow-loop",onClick:Q=>o.reset()})],className:"editor-controls"})]})}}}let Qr=Rt("Preludic.Base.Tag");function HT(n){return n}function qT(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:n}}let VT={Tag:Qr,wrap:HT,wrapForReal:qT},$l=Rt("Preludic.LengthTag"),wu=Rt("Preludic.NonPreludicValuePassed");function XT(n,u,r){return n._0.RE_EXN_ID===$l&&u._0.RE_EXN_ID===$l?Xr(_n.unify(n._1,u._1,r),c=>zr(c,f=>({TAG:"AnyValue",_0:{RE_EXN_ID:Lr.Tag},_1:f}))):Tt}function LT(n,u){if(n._0.RE_EXN_ID===$l)return"length("+_n.prettyPrint(n._1,u)+")";throw{RE_EXN_ID:wu,Error:new Error}}function YT(n,u,r){return bm(mt(Zc(n1(_n.parse,u,r),Oa("length("),Oa(")")),c=>({TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:{RE_EXN_ID:$l},_1:c}})),n)}function QT(n,u){if(n._0.RE_EXN_ID===$l){let r={RE_EXN_ID:$l},c=_n.substitute(n._1,Jy.filterMap(u,(o,m)=>_n.coerce(m)));return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:r,_1:c}}}throw{RE_EXN_ID:wu,Error:new Error}}function ZT(n,u,r){if(n._0.RE_EXN_ID===$l){let c=_n.substDeBruijn(n._1,u.map(f=>Vc(f,_n.coerce)),r);return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:{RE_EXN_ID:$l},_1:c}}}throw{RE_EXN_ID:wu,Error:new Error}}function KT(n){let u=n._1;if(n._0.RE_EXN_ID===$l)return u.every(r=>{switch(r.TAG){case"String":return!0;case"Var":case"Schematic":return!1}})?{TAG:"AnyValue",_0:{RE_EXN_ID:ct.Tag},_1:ct.$$const(u.length)}:n;throw{RE_EXN_ID:wu,Error:new Error}}function JT(n){return!0}function FT(n,u,r){if(n._0.RE_EXN_ID===$l)return{TAG:"AnyValue",_0:{RE_EXN_ID:$l},_1:_n.upshift(n._1,u,r)};throw{RE_EXN_ID:wu,Error:new Error}}function WT(n){return he(n)}let pn={unify:XT,prettyPrint:LT,parse:YT,substitute:QT,substDeBruijn:ZT,reduce:KT,concrete:JT,upshift:FT,coerce:WT};function IT(n){let u=n.atom;if(u._0.RE_EXN_ID===$l)return v.jsxs("span",{children:[v.jsx("span",{children:"length(",className:"symbol"}),z1.make({atom:u._1,scope:n.scope}),v.jsx("span",{children:")",className:"symbol"})]});throw{RE_EXN_ID:wu,Error:new Error}}let PT={make:IT};function eE(n,u){let r=m=>{throw{RE_EXN_ID:"Undefined_recursive_module",_1:n,Error:new Error}},c=(m,h,y)=>{if(typeof m!="object")switch(m){case"Function":case"Lazy":h[y]=r;return;case"Class":h[y]=[r,r,r,0];return}else{if(m.TAG!=="Module"){h[y]=m._0;return}let p=m._0,T={};h[y]=T;let A=p.length;for(let $=0;${if(typeof f!="object")switch(f){case"Function":h[y]=m;return;case"Lazy":case"Class":Object.assign(o,m);return}else{if(f.TAG!=="Module")return;let p=f._0;for(let T=0,A=p.length;T(r=>{let c=A=>{let $=A.scope[A.idx];return $!==void 0&&A.scope.indexOf($)===A.idx?v.jsx("span",{children:$,className:"term-metavar"}):v.jsxs("span",{children:["\\",A.idx],className:"term-metavar-unnamed"})},f=A=>v.jsxs("span",{children:[A,"."],className:"rule-binder"}),o=(A,$)=>{let k=Q=>{let _=r.parseMeta(Q.trim());if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let O=_._0,j=O[1];return j!==""?{TAG:"Error",_0:"Trailing text: "+j}:($(O[0]),{TAG:"Ok",_0:void 0})};return v.jsxs("span",{children:[v.jsx(Hc.make,{label:A,onConfirm:k}),"."],className:"rule-binder"})},m=A=>jl([[v.jsx("span",{children:"(",className:"symbol"},"-1")],A,[v.jsx("span",{children:")",className:"symbol"},"-2")]]),h=A=>A.flatMap(($,k)=>k===0?[$]:[" ",$]),y=eE(["SExpView.res",59,6],{TAG:"Module",_0:[["Function","make"]]});return tE({_0:[["Function","make"]]},y,{make:A=>{let $=A.parens,k=A.scope,Q=A.term,_=$!==void 0?$:!0;switch(Q.TAG){case"Atom":return v.jsx("span",{children:v.jsx(u.make,{atom:Q._0,scope:k}),className:"term-const"});case"Compound":let O=h(Q.subexps.map((j,S)=>v.jsx(y.make,{term:j,scope:k},S.toString())));return v.jsx("span",{children:_?m(O):O,className:"term-compound"});case"Var":return c({idx:Q.idx,scope:k});case"Schematic":return v.jsxs("span",{children:["?",Q.schematic,v.jsx("span",{children:m(h(Q.allowed.map((j,S)=>Re.createElement(c,gm({idx:j,scope:k},S))))),className:"term-schematic-telescope"})],className:"term-schematic"})}}}),{make:A=>v.jsx(y.make,{term:A.term,scope:A.scope,parens:!1}),makeMeta:f,makeEditableMeta:o}})}function nE(n){return n>=0?n:-n|0}function aE(n){let u=n._1,r=n._0;if(r.RE_EXN_ID===qr.Tag)return tt(Dl(u),ct.$$const);if(r.RE_EXN_ID===$c.Tag)return u.TAG==="Var"?ct.$$var(u.idx):ct.schematic(u.schematic,u.allowed);if(r.RE_EXN_ID!==Lr.Tag||u.length!==1)return;let c=u[0];switch(c.TAG){case"String":return tt(Dl(c._0),ct.$$const);case"Var":case"Schematic":return}}let Ol=ct.Const,Vr=ct.identity;function Ou(n,u){return{schemas:jc(n.schemas,u.schemas,(r,c,f)=>{if(c!==void 0){let o=c.count,m=c.allowed;return f!==void 0?{allowed:m,count:o+f.count|0}:{allowed:m,count:o}}if(f!==void 0)return{allowed:f.allowed,count:f.count};throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),vars:jc(n.vars,u.vars,(r,c,f)=>{if(c!==void 0)return f!==void 0?c+f|0:c;if(f!==void 0)return f;throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),const:n.const+u.const|0}}function Eu(n,u){return{schemas:ju(n.schemas,r=>({allowed:r.allowed,count:r.count*u|0})),vars:ju(n.vars,r=>r*u|0),const:n.const*u|0}}function uE(n,u){let r=new Map;return r.set(n,u),r}function rE(n,u){let r=" "+Ol.opString+" ",f=$t(n.schemas)!==0?na(n.schemas).map(T=>{let A=T[1];return Ol.formatMultiple(Zy(T[0],A.allowed,u),A.count)}).join(r):void 0,m=$t(n.vars)!==0?na(n.vars).map(T=>Ol.formatMultiple(ym(T[0],u),T[1])).join(r):void 0,y=n.const!==0?Ol.formatMultipleConst(n.const):void 0,p=Ma([f,m,y]).join(r);return Ol.openTerm+" "+p+" "+Ol.closeTerm}function iE(n,u){return Fv(n**u|0,r=>{let c=[],f=r;for(let o=0;or[0]>r[1])}function sE(n,u){return ke(Gu(n,u,(r,c)=>r*c|0),0,(r,c)=>r+c|0)}function fE(n,u,r){let c=(m,h)=>{let y=Qe(Yp(m.schemas),void 0);return Ee(tt(ct.Const.opInv(h.const,m.const),p=>bn(uE(y,ct.$$const(p)))),Tt)},f=(m,h)=>$t(m.schemas)===1&&$t(h.schemas)===0&&$t(m.vars)===0&&$t(h.vars)===0?Qe(pm(m.schemas,Qe(Yp(m.schemas),void 0)),void 0).count===1:!1,o=()=>{let m=jc(n.schemas,u.schemas,(A,$,k)=>{if($!==void 0){let Q=$.count,_=$.allowed;return k!==void 0?{allowed:_,count:Q-k.count|0}:{allowed:_,count:Q}}if(k!==void 0)return{allowed:k.allowed,count:-k.count|0};throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),h=na(m),y=h.map(A=>A[1].count),p=ke(y,0,(A,$)=>jt(A,nE($))),T=[];return Gc(tA(iE(p+1|0,h.length)),A=>{if(sE(A,y)===0)if(T.every($=>!cE(A,$))){T.push(A);return}else return}),bn(ke(iA(T,(A,$)=>{let k=Su(h,A),Q=k!==void 0?ct.schematic(k[0],k[1].allowed):Vr;return new Map(Ma(Gu(h,$,(_,O)=>{if(O>0)return[_[0],Eu(Q,O)]})))}),new Map,(A,$)=>Ky(A,$,Ou)))};return $t(n.schemas)===0&&$t(u.schemas)===0?bn(new Map):f(n,u)?c(n,u):f(u,n)?c(u,n):(n.const-u.const|0)===0?o():Tt}function oE(n,u,r){let c=Pn(mt(Ol.parseVar(u),ct.$$var),"var"),f=Pn(mt(Ol.parseSchema(r,u),p=>ct.schematic(p[0],p[1])),"schematic"),o=Pn(mt(Ol.parseConst,ct.$$const),"const"),m=Da(e1([c,f,o])),h=pt(m,p=>mt(_m(Iy(Oa(Ol.opString),m)),T=>ke(T,p,Ou))),y=Zc(h,Oa(Ol.openTerm),Oa(Ol.closeTerm));return bm(y,n)}function mE(n){return n}function dE(n,u){let r=ke(na(n.schemas).map(c=>{let f=c[1],o=f.count,m=c[0],h=u.get(m);return Eu(h!==void 0?h:ct.schematic(m,f.allowed),o)}),Vr,Ou);return Ou(r,{schemas:Vr.schemas,vars:n.vars,const:n.const})}function hE(n,u,r){let c=r!==void 0?r:0,f=ke(na(n.vars).map(m=>{let h=m[1],y=m[0];if(y=u.length)return Eu(ct.$$var(y-u.length|0),h);let p=Qe(u[y-c|0],void 0);if(p!==void 0)return Eu(p,h);throw{RE_EXN_ID:Hr,_1:"index "+(y-c|0).toString()+" not of sort blah",Error:new Error}}),Vr,Ou),o=ju(n.schemas,m=>({allowed:Et(m.allowed,h=>{if(!(h<(c+u.length|0)))return h-(c+u.length|0)|0}),count:m.count}));return Ou(f,{schemas:o,vars:Vr.vars,const:n.const})}function pE(n){return $t(n.vars)>0?!0:n.const>0}function yE(n,u,r){let c=r!==void 0?r:0,f=hm(na(n.vars).map(m=>{let h=m[1],y=m[0];return y>=c?[y+u|0,h]:[y,h]}));return{schemas:ju(n.schemas,m=>({allowed:m.allowed.map(h=>h>=c?h+u|0:h),count:m.count})),vars:f,const:n.const}}let gE={Base:ct,unify:fE,prettyPrint:rE,parse:oE,substitute:dE,upshift:yE,substDeBruijn:hE,concrete:pE,reduce:mE,coerce:aE},Eo=ct.Const;function ry(n){let u=Ee(tt(n.count,c=>c>1?c:null),null),r=n.scope[n.idx];return r!==void 0&&n.scope.indexOf(r)===n.idx?v.jsxs("span",{children:[u,r],className:"term-metavar"}):v.jsxs("span",{children:[u,"\\",n.idx],className:"term-metavar-unnamed"})}function bE(n){return[v.jsx("span",{children:"(",className:"symbol-nat"},"-1"),n,v.jsx("span",{children:")",className:"symbol-nat"},"-2")]}function vE(n){let u=n.scope,r=n.atom,f=$t(r.schemas)!==0?na(r.schemas).map(T=>{let A=T[1],$=A.allowed.map((k,Q)=>v.jsx(ry,{idx:k,scope:u}));return v.jsxs("span",{children:[A.count.toString()+"?",T[0],v.jsx("span",{children:$r($,Eo.opString),className:"term-schematic-telescope"})],className:"term-schematic"})}):void 0,o=$t(r.vars),m;if(o!==0){let T=na(r.vars).map(A=>{let $=A[0];return v.jsx(ry,{idx:$,count:A[1],scope:u},$.toString())});m=$r(T,Eo.opString)}else m=void 0;let h,y=0;f!==void 0||m!==void 0?y=1:h=r.const,y===1&&(h=r.const>0?r.const:void 0);let p=Ma([f,m,h]);return v.jsx("span",{children:bE($r(p,Eo.opString)),className:"term-compound"})}let AE={make:vE},H1={Atom:gE,AtomView:AE},_E=st(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),q1=Ru(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),bc=Yr(),SE=["disjointness"];function TE(n,u){return n}function EE(n,u){return{factName:n.factName}}function xE(n){return[]}function GE(n,u,r){return n}function iy(n){let u=Ot(n),r=u[0];if(r.TAG==="Symbol"&&r.constructor)return[r.name,u[1].length]}function V1(n){let u=Jc(n);if(u===void 0)return!1;let r=iy(u[0]),c=iy(u[1]);return r!==void 0&&c!==void 0?r[0]!==c[0]?!0:r[1]!==c[1]:!1}function NE(n,u,r,c){let f=Zl.prettyPrint(n.factName,u.localFactNames),o=q1.lookup(u,n.factName);return o!==void 0?o.vars.length!==0?{TAG:"Error",_0:"fact "+f+" is not a plain assumption"}:o.premises.length!==0?{TAG:"Error",_0:"fact "+f+" is not a plain assumption"}:V1(o.conclusion)?{TAG:"Ok",_0:{factName:n.factName}}:{TAG:"Error",_0:"fact "+f+" is not a constructor disjointness"}:{TAG:"Error",_0:"no such fact: "+f}}function jE(n,u,r,c){return ke(Et(n.localFacts.map((f,o)=>[o,f,Su(n.localFactNames,o)]),f=>{let o=f[2],m=f[1],h=f[0];if(!(m.vars.length!==0||m.premises.length!==0||!(o!==void 0&&V1(m.conclusion))))return bc.atAssumption(h,[{TAG:"Action",_0:"disjointness "+o,_1:{factName:{TAG:"Local",index:h}},_2:void 0}])}),bc.emptyAttached(),bc.combine)}function OE(n,u,r,c,f,o){return"disjointness ".concat(Zl.prettyPrint(n.factName,c)).concat(Mt)}function RE(n,u,r,c,f,o,m){let h=Zl.parse(n.trim(),f);if(h.TAG!=="Ok")return{TAG:"Error",_0:"Expected fact name"};let y=h._0;return{TAG:"Ok",_0:[{factName:y[0]},y[1]]}}let dl={Rule:_E,Context:q1,Results:bc,keywords:SE,substitute:TE,map:EE,subproofs:xE,setSubproof:GE,check:NE,apply:jE,prettyPrint:OE,parse:RE},DE=st(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),X1=Ru(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),vc=Yr(),$E=["injectivity"];function ME(n,u){return n}function wE(n,u){return{factName:n.factName,subgoal:u(n.subgoal)}}function zE(n){return[[void 0,n.subgoal]]}function CE(n,u,r){return{factName:n.factName,subgoal:r}}function Dm(n){let u=Jc(n);if(u===void 0)return;let r=Ot(u[0]),c=Ot(u[1]),f=r[0];if(f.TAG!=="Symbol"||!f.constructor)return;let o=c[0];if(o.TAG!=="Symbol"||!o.constructor)return;let m=c[1],h=r[1];if(f.name===o.name&&h.length===m.length)return Lc(h,m)}function $m(n){return{vars:[],premises:[],conclusion:Om(n[0],n[1])}}function kE(n,u,r,c){let f=Zl.prettyPrint(n.factName,u.localFactNames),o=X1.lookup(u,n.factName);if(o===void 0)return{TAG:"Error",_0:"no such fact: "+f};if(o.vars.length!==0)return{TAG:"Error",_0:"fact "+f+" is not a plain assumption"};if(o.premises.length!==0)return{TAG:"Error",_0:"fact "+f+" is not a plain assumption"};let m=Dm(o.conclusion);return m!==void 0?{TAG:"Ok",_0:{factName:n.factName,subgoal:c(n.subgoal,{vars:[],premises:m.map($m),conclusion:r})}}:{TAG:"Error",_0:"fact "+f+" is not a constructor equality"}}function BE(n,u,r,c){return ke(Et(n.localFacts.map((f,o)=>[o,f,Su(n.localFactNames,o)]),f=>{let o=f[2],m=f[1],h=f[0];if(m.vars.length!==0||m.premises.length!==0||o===void 0)return;let y=Dm(m.conclusion);if(y===void 0)return;let p=[],T=y.map($m),A=m.conclusion,$={vars:p,premises:T,conclusion:A};return vc.atAssumption(h,[{TAG:"Action",_0:"injectivity "+o,_1:{factName:{TAG:"Local",index:h},subgoal:c($)},_2:void 0}])}),vc.emptyAttached(),vc.combine)}function UE(n,u,r,c,f,o){let m=f!==void 0?f:0;return"injectivity ".concat(Zl.prettyPrint(n.factName,c)).concat(Mt).concat(o(n.subgoal,u,r,c,m)).concat(Mt)}let HE=Rt("HOMethods.ConstructorInjectivity.InternalParseError");function qE(n,u,r,c,f,o,m){let h=Zl.parse(n.trim(),f);if(h.TAG!=="Ok")return{TAG:"Error",_0:"Expected fact name"};let y=h._0,p=m(y[1].trim(),r,c,f,o);if(p.TAG!=="Ok")return{TAG:"Error",_0:p._0};let T=p._0;return{TAG:"Ok",_0:[{factName:y[0],subgoal:T[0]},T[1]]}}let el={Term:void 0,Judgment:void 0,Rule:DE,Context:X1,Results:vc,keywords:$E,substitute:ME,map:wE,subproofs:zE,setSubproof:CE,injectivityPairs:Dm,mkPremiseRule:$m,check:kE,apply:BE,prettyPrint:UE,InternalParseError:HE,parse:qE},cy=$u(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke});function VE(n,u){return p1(n.grammar)}function XE(n,u){let r=F_(n.trim());if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let c=r._0,f=c[1],o=c[0];if(f!=="")return{TAG:"Error",_0:"Unable to read from: "+f};let m=h1(o);if(m.TAG!=="Ok")return{TAG:"Error",_0:m._0};let h=m._0;return{TAG:"Ok",_0:[{grammar:o,compiled:h},{facts:{},ruleStyle:void 0,grammar:h}]}}function LE(n){return v.jsx("pre",{children:p1(n.content.grammar)})}function YE(n){return v.jsxs("span",{children:[n,"."],className:"rule-binder"})}function QE(n,u){let r=c=>{let f=T1(c.trim().concat("."));if(f.TAG!=="Ok")return{TAG:"Error",_0:f._0};let o=f._0,m=o[1];return m!==""?{TAG:"Error",_0:"trailing string after meta name: ".concat(m)}:(u(o[0]),{TAG:"Ok",_0:void 0})};return v.jsxs("span",{children:[v.jsx(Hc.make,{label:n,onConfirm:r}),"."],className:"rule-binder"})}function yn(n){return v.jsx("span",{children:n,className:"term-op-lit"})}function ZE(n,u){if(n==="constructor")return v.jsx("span",{children:u.slice(1),className:"term-"+n});if(n==="symbol"||n==="op-lit")switch(u){case"&&":return yn("∧");case"->":return yn("→");case"<->":return yn("↔");case"all":return yn("∀");case"bot":return yn("⊥");case"exists":return yn("∃");case"not":return yn("¬");case"top":return yn("⊤");case"||":return yn("∨");default:return v.jsx("span",{children:u,className:"term-symbol"})}else return v.jsx("span",{children:u,className:"term-"+n})}function L1(n,u){return v.jsx(Re.Fragment,{children:n},u.toString())}function KE(n){return n.map(L1)}function JE(n){return jl(n.map((r,c)=>c===0?[r]:[" ",r])).map(L1)}function FE(n){return v.jsxs("span",{children:[v.jsx("span",{children:"(",className:"term-lambda-punct"}),n,v.jsx("span",{children:")",className:"term-lambda-punct"})]})}let sy={leaf:ZE,seq:KE,spaced:JE,parens:FE},WE=y1(sy)(R1(sy));function IE(n){return WE.prettyPrintWithGrammar(n.term,!1,n.grammar,n.scope)}let PE=IE;const Y1=Object.freeze(Object.defineProperty({__proto__:null,make:PE,makeEditableMeta:QE,makeMeta:YE},Symbol.toStringTag,{value:"Module"}));function qc(n){let u=n.ruleRef,r=n.assms;if(u.TAG==="Local"){let o=u.index,m=r[o];return m===void 0?v.jsx("span",{children:"#"+String(o),className:"rule-ref rule-ref--invalid"}):Uy(r,-1,(p,T,A)=>T===m?A:p)!==o?v.jsxs("span",{children:[m,v.jsx("span",{children:"@"+String(o),className:"rule-ref__index"})],className:"rule-ref rule-rulename-local rule-ref-shadowed"}):v.jsx("span",{children:m,className:"rule-ref rule-rulename-local"})}let c=u.name;return cA(r,o=>o===c)?v.jsx("span",{children:c,className:"rule-ref rule-rulename-global rule-ref--shadowed"}):v.jsx("span",{children:c,className:"rule-ref rule-rulename-global"})}let Mm={make:qc};function Q1(n){return u=>{let r=OT(n)(u),c=o=>v.jsx(qc,{assms:o.ctx.localFactNames,ruleRef:o.method.ruleName});return{Method:r,summary:c,make:o=>(m=>v.jsxs("div",{children:[v.jsx("span",{className:"typcn typcn-media-play"}),c(m),v.jsx("ul",{children:m.method.subgoals.map((h,y)=>v.jsx("li",{children:Re.createElement(o,{proof:h,ctx:m.ctx,ruleStyle:m.ruleStyle,grammar:m.grammar,gen:m.gen,onChange:(p,T)=>m.onChange(r.setSubproof(m.method,y,p),T)})},String(y))),className:"subgoals"})]}))}}}function Z1(n){return u=>{let r=RT(n)(u),c=o=>v.jsxs(v.Fragment,{children:[v.jsx("span",{children:v.jsx(qc,{assms:o.ctx.localFactNames,ruleRef:o.method.ruleName}),className:"rule-rulename-elim"}),v.jsx("sup",{children:v.jsx(qc,{assms:o.ctx.localFactNames,ruleRef:o.method.elimName})})]});return{Method:r,summary:c,make:o=>(m=>v.jsxs("div",{children:[v.jsx("span",{className:"typcn typcn-media-play"}),c(m),v.jsx("ul",{children:m.method.subgoals.map((h,y)=>v.jsx("li",{children:Re.createElement(o,{proof:h,ctx:m.ctx,ruleStyle:m.ruleStyle,grammar:m.grammar,gen:m.gen,onChange:(p,T)=>m.onChange(r.setSubproof(m.method,y,p),T)})},String(y))),className:"subgoals"})]}))}}}function K1(n){return u=>(r=>{let c=DT(n)(u),f=h=>v.jsx("span",{children:"lemma"}),o=Du(n)(u)(r);return{Method:c,summary:f,RuleView:o,make:h=>(y=>v.jsxs("div",{children:[v.jsx("b",{children:"have "}),v.jsx(o.make,{rule:y.method.rule,style:y.ruleStyle,grammar:y.grammar,scope:y.ctx.fixes,children:null}),Re.createElement(h,{proof:y.method.proof,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(p,T)=>{let A=y.method;y.onChange({rule:A.rule,proof:p,show:A.show},T)}}),Re.createElement(h,{proof:y.method.show,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(p,T)=>{let A=y.method;y.onChange({rule:A.rule,proof:A.proof,show:p},T)}})]}))}})}function wa(n){return u=>(r=>(c=>({Method:$T(n)(u)(r.Method)(c.Method),summary:h=>{let y=h.method;return y.TAG==="First"?r.summary({method:y._0,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(p,T)=>h.onChange({TAG:"First",_0:p},T)}):c.summary({method:y._0,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(p,T)=>h.onChange({TAG:"Second",_0:p},T)})},make:h=>(y=>{let p=y.method;return p.TAG==="First"?r.make(h)({method:p._0,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(T,A)=>y.onChange({TAG:"First",_0:T},A)}):c.make(h)({method:p._0,ctx:y.ctx,ruleStyle:y.ruleStyle,grammar:y.grammar,gen:y.gen,onChange:(T,A)=>y.onChange({TAG:"Second",_0:T},A)})})})))}function ex(n){return u=>{let r=$u(n)(u),c=m=>{switch(m){case"Gentzen":return{TAG:"Ok",_0:["Gentzen",{facts:{},ruleStyle:"Gentzen",grammar:n.emptyGrammar}]};case"Hybrid":return{TAG:"Ok",_0:["Hybrid",{facts:{},ruleStyle:"Hybrid",grammar:n.emptyGrammar}]};case"Linear":return{TAG:"Ok",_0:["Linear",{facts:{},ruleStyle:"Linear",grammar:n.emptyGrammar}]};default:return{TAG:"Error",_0:"unknown rule style"}}},f=m=>{switch(m){case"Gentzen":return"Gentzen";case"Linear":return"Linear";case"Hybrid":return"Hybrid"}};return{Ports:r,deserialise:c,serialise:f,make:m=>{let h=Re.useState(()=>m.content),y=h[1],p=h[0],T=A=>{let k=A.target.value,Q=c(k);if(Q.TAG!=="Ok")return;let _=Q._0[0];y(O=>_),m.onChange(_,{facts:{},ruleStyle:_,grammar:n.emptyGrammar})};return v.jsxs(v.Fragment,{children:[["Gentzen","Linear","Hybrid"].map(A=>v.jsx("input",{id:"style_".concat(f(A)),checked:p===A,name:"style",type:"radio",value:f(A),onChange:T},f(A))),v.jsx("p",{children:f(p)})]})}}}}function tx(n){return u=>{let r=st(n)(u),c=Ru(n)(u),f=Yr(),o=["rewrite","rev_rewrite"],m=S=>[["NewGoal",S.newGoal]].concat(S.subgoals.map((R,D)=>[{TAG:"Subgoal",_0:D},R])),h=(S,R,D)=>typeof R!="object"?{ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:D,subgoals:S.subgoals}:{ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:S.newGoal,subgoals:Rc(S.subgoals,R._0,D)},y=(S,R)=>({ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values.map(D=>n.substitute(D,R)),newGoal:S.newGoal,subgoals:S.subgoals}),p=(S,R)=>({ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:R(S.newGoal),subgoals:S.subgoals.map(R)}),T=(S,R,D)=>S==="Forward"?[R,D]:[D,R],A=(S,R,D,C)=>{let F=Zl.prettyPrint(S.ruleName,R.localFactNames),B=c.lookup(R,S.ruleName);if(B===void 0)return{TAG:"Error",_0:"no such rule: "+F};if(S.values.length!==B.vars.length)return{TAG:"Error",_0:"wrong number of instantiations for rule "+F};let E=u.locate(D,S.path);if(E===void 0)return{TAG:"Error",_0:"invalid rewrite path"};let b=E[1],N=E[0],H=r.instantiate(B,S.values),L=H.premises,w=u.asEquation(H.conclusion);if(w===void 0)return{TAG:"Error",_0:"rule "+F+" is not an equation"};let V=T(S.direction,w[0],w[1]),q=n.upshift(V[0],b.length,void 0);if(!n.equivalent(q,N))return{TAG:"Error",_0:"instantiated left-hand side ("+n.prettyPrint(q,n.emptyGrammar,R.fixes)+`) +`).concat(o.prettyPrint(U.proof,X.grammar,[],[],void 0)),deserialise:(U,X)=>{let _=n.makeGen(),O=U,G=f.parseTopLevel(O,X.grammar,he(_),[]);if(G.TAG!=="Ok")return{TAG:"Error",_0:G._0};let T=G._0,j=T[0],N=j[1],B=j[0],J=o.parse(T[1],X.grammar,[],[],_);if(J.TAG!=="Ok")return{TAG:"Error",_0:J._0};let k=J._0,E=k[1];return E.trim().length>0?{TAG:"Error",_0:"Trailing input: ".concat(E)}:{TAG:"Ok",_0:[{name:N,rule:B,proof:k[0],gen:_,substFailed:void 0},{facts:Object.fromEntries([[N,B]]),ruleStyle:void 0,grammar:n.emptyGrammar}]}},make:U=>{let X=Ne(U.imports.ruleStyle,"Hybrid"),_=[],O=[],G=[],T=U.imports.facts,j={fixes:_,localFacts:O,localFactNames:G,globalFacts:T},N=o.check(j,U.content.proof,U.content.rule),B=xe.useRef(null),J=xe.useRef(null),k=xe.useRef(-1);xe.useLayoutEffect(()=>{if(k.current>=0){let Q=k.current;k.current=-1;let W=J.current;W!=null&&focusGoalNearIndex(W,Q)}},[U.content.proof]);let E=Q=>{k.current=Q},D=(Q,W)=>{let H=o.substitute(o.uncheck(Q),W),C;try{o.check(j,H,U.content.rule);let M=U.content;C={name:M.name,rule:M.rule,proof:H,gen:M.gen,substFailed:void 0}}catch(M){let A=la(M);if(A.RE_EXN_ID===qr){let z=U.content;C={name:z.name,rule:z.rule,proof:z.proof,gen:z.gen,substFailed:A._1}}else throw A}U.onChange(C,{facts:Object.fromEntries([[U.content.name,U.content.rule]]),ruleStyle:void 0,grammar:n.emptyGrammar})},$=U.content.substFailed;return b.jsxs(BT,{children:[b.jsx(y.make,{rule:U.content.rule,style:X,grammar:U.imports.grammar,scope:[],children:b.jsx("span",{children:U.content.name,className:"rule-rulename-global"})}),b.jsx("h4",{children:"Proof"}),b.jsxs(h.FocusNextContext.Provider.make,{value:{requestFocusIndex:E},children:[b.jsxs("div",{children:[b.jsx(h.make,{proof:N,ctx:j,ruleStyle:X,grammar:U.imports.grammar,gen:U.content.gen,onChange:D}),$!==void 0?$:null],ref:he(J),className:"theorem-instance"}),b.jsx("div",{ref:he(B),className:"sidebar watch-outside-click"})]})],sidebarRef:B})}}}))}function qT(n){return u=>(r=>{let c=ft(n)(u),f=Du(n)(u)(r),o=$u(n)(u);return{Rule:c,RuleView:f,Ports:o,serialise:(p,S)=>Object.entries(p.rules).map(v=>c.prettyPrintTopLevel(v[1],v[0],S.grammar,void 0)).join(` +`),deserialise:(p,S)=>{let v=p,R=!0,U={},X={TAG:"Error",_0:"impossible"};for(;R;){let _=c.parseTopLevel(v,S.grammar,void 0,[]);if(_.TAG==="Ok"){let O=_._0,G=O[1],T=O[0],j=T[1];j.trim()===""?(R=!1,X={TAG:"Error",_0:"Rule given with no name"}):(U[j]=T[0],G.trim()===""?(R=!1,X={TAG:"Ok",_0:U}):v=G)}else R=!1,X={TAG:"Error",_0:_._0}}return Ml(X,_=>[{rules:_},{facts:_,ruleStyle:void 0,grammar:n.emptyGrammar}])},make:p=>b.jsx("div",{children:Object.entries(p.content.rules).map((S,v)=>b.jsx(f.make,{rule:S[1],style:Ne(p.imports.ruleStyle,"Hybrid"),grammar:p.imports.grammar,scope:[],children:b.jsx("span",{children:S[0],className:"rule-rulename-global"})},String(v))),className:"axiom-set axiom-set-".concat(String(Ne(p.imports.ruleStyle,"Hybrid")))})}})}function Mu(n){let u=n.Ports,r=(o,m)=>o.TAG==="Ok"?n.serialise(o._0,m):o._0[1],c=(o,m)=>{let h=n.deserialise(o,m);if(h.TAG!=="Ok")return{TAG:"Ok",_0:[{TAG:"Error",_0:[h._0,o]},u.empty]};let y=h._0;return{TAG:"Ok",_0:[{TAG:"Ok",_0:y[0]},y[1]]}};return{Ports:u,serialise:r,deserialise:c,make:o=>{let m=xe.useState(()=>!1),h=m[1],y=xe.useState(()=>r(o.content,o.imports)),p=y[1],S=y[0],v=X=>{let O=X.target.value;p(G=>O)},R=X=>{let _=c(S,o.imports);if(_.TAG==="Ok"){let O=_._0;o.onChange(O[0],he(O[1]))}else console.log("Impossible happened");h(O=>!1)};if(m[0])return b.jsxs("div",{children:[b.jsx("textarea",{className:"editor-textArea",value:S,onChange:v}),b.jsx("div",{children:b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-tick",onClick:R}),className:"editor-controls"})]});let U=o.content;return U.TAG==="Ok"?b.jsxs("div",{children:[b.jsx(n.make,{content:U._0,imports:o.imports,onChange:(X,_)=>o.onChange({TAG:"Ok",_0:X},_),reset:o.reset}),b.jsxs("div",{children:[b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-edit",onClick:X=>{p(_=>r(o.content,o.imports)),h(_=>!0)}}),b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-arrow-loop",onClick:X=>o.reset()})],className:"editor-controls"})]}):b.jsxs("div",{children:[b.jsx("div",{children:U._0[0],className:"error"}),b.jsxs("div",{children:[b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-edit",onClick:X=>{p(_=>r(o.content,o.imports)),h(_=>!0)}}),b.jsx("span",{className:"editor-button button-icon button-icon-blue typcn typcn-arrow-loop",onClick:X=>o.reset()})],className:"editor-controls"})]})}}}let Qr=Dt("Preludic.Base.Tag");function HT(n){return n}function VT(n){return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:n}}let LT={Tag:Qr,wrap:HT,wrapForReal:VT},zl=Dt("Preludic.LengthTag"),wu=Dt("Preludic.NonPreludicValuePassed");function XT(n,u,r){return n._0.RE_EXN_ID===zl&&u._0.RE_EXN_ID===zl?Lr(xn.unify(n._1,u._1,r),c=>zr(c,f=>({TAG:"AnyValue",_0:{RE_EXN_ID:Xr.Tag},_1:f}))):xt}function YT(n,u){if(n._0.RE_EXN_ID===zl)return"length("+xn.prettyPrint(n._1,u)+")";throw{RE_EXN_ID:wu,Error:new Error}}function QT(n,u,r){return vm(dt(Qc(n1(xn.parse,u,r),ja("length("),ja(")")),c=>({TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:{RE_EXN_ID:zl},_1:c}})),n)}function ZT(n,u){if(n._0.RE_EXN_ID===zl){let r={RE_EXN_ID:zl},c=xn.substitute(n._1,Jy.filterMap(u,(o,m)=>xn.coerce(m)));return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:r,_1:c}}}throw{RE_EXN_ID:wu,Error:new Error}}function KT(n,u,r){if(n._0.RE_EXN_ID===zl){let c=xn.substDeBruijn(n._1,u.map(f=>rm(f,xn.coerce)),r);return{TAG:"AnyValue",_0:{RE_EXN_ID:Qr},_1:{TAG:"AnyValue",_0:{RE_EXN_ID:zl},_1:c}}}throw{RE_EXN_ID:wu,Error:new Error}}function JT(n){let u=n._1;if(n._0.RE_EXN_ID===zl)return u.every(r=>{switch(r.TAG){case"String":return!0;case"Var":case"Schematic":return!1}})?{TAG:"AnyValue",_0:{RE_EXN_ID:st.Tag},_1:st.$$const(u.length)}:n;throw{RE_EXN_ID:wu,Error:new Error}}function FT(n){return!0}function WT(n,u,r){if(n._0.RE_EXN_ID===zl)return{TAG:"AnyValue",_0:{RE_EXN_ID:zl},_1:xn.upshift(n._1,u,r)};throw{RE_EXN_ID:wu,Error:new Error}}function IT(n){return he(n)}let bn={unify:XT,prettyPrint:YT,parse:QT,substitute:ZT,substDeBruijn:KT,reduce:JT,concrete:FT,upshift:WT,coerce:IT};function PT(n){let u=n.atom;if(u._0.RE_EXN_ID===zl)return b.jsxs("span",{children:[b.jsx("span",{children:"length(",className:"symbol"}),z1.make({atom:u._1,scope:n.scope}),b.jsx("span",{children:")",className:"symbol"})]});throw{RE_EXN_ID:wu,Error:new Error}}let eE={make:PT};function tE(n,u){let r=m=>{throw{RE_EXN_ID:"Undefined_recursive_module",_1:n,Error:new Error}},c=(m,h,y)=>{if(typeof m!="object")switch(m){case"Function":case"Lazy":h[y]=r;return;case"Class":h[y]=[r,r,r,0];return}else{if(m.TAG!=="Module"){h[y]=m._0;return}let p=m._0,S={};h[y]=S;let v=p.length;for(let R=0;R{if(typeof f!="object")switch(f){case"Function":h[y]=m;return;case"Lazy":case"Class":Object.assign(o,m);return}else{if(f.TAG!=="Module")return;let p=f._0;for(let S=0,v=p.length;S(r=>{let c=v=>{let R=v.scope[v.idx];return R!==void 0&&v.scope.indexOf(R)===v.idx?b.jsx("span",{children:R,className:"term-metavar"}):b.jsxs("span",{children:["\\",v.idx],className:"term-metavar-unnamed"})},f=v=>b.jsxs("span",{children:[v,"."],className:"rule-binder"}),o=(v,R)=>{let U=X=>{let _=r.parseMeta(X.trim());if(_.TAG!=="Ok")return{TAG:"Error",_0:_._0};let O=_._0,G=O[1];return G!==""?{TAG:"Error",_0:"Trailing text: "+G}:(R(O[0]),{TAG:"Ok",_0:void 0})};return b.jsxs("span",{children:[b.jsx(qc.make,{label:v,onConfirm:U}),"."],className:"rule-binder"})},m=v=>Dl([[b.jsx("span",{children:"(",className:"symbol"},"-1")],v,[b.jsx("span",{children:")",className:"symbol"},"-2")]]),h=v=>v.flatMap((R,U)=>U===0?[R]:[" ",R]),y=tE(["SExpView.res",59,6],{TAG:"Module",_0:[["Function","make"]]});return lE({_0:[["Function","make"]]},y,{make:v=>{let R=v.parens,U=v.scope,X=v.term,_=R!==void 0?R:!0;switch(X.TAG){case"Atom":return b.jsx("span",{children:b.jsx(u.make,{atom:X._0,scope:U}),className:"term-const"});case"Compound":let O=h(X.subexps.map((G,T)=>b.jsx(y.make,{term:G,scope:U},T.toString())));return b.jsx("span",{children:_?m(O):O,className:"term-compound"});case"Var":return c({idx:X.idx,scope:U});case"Schematic":return b.jsxs("span",{children:["?",X.schematic,b.jsx("span",{children:m(h(X.allowed.map((G,T)=>xe.createElement(c,bm({idx:G,scope:U},T))))),className:"term-schematic-telescope"})],className:"term-schematic"})}}}),{make:v=>b.jsx(y.make,{term:v.term,scope:v.scope,parens:!1}),makeMeta:f,makeEditableMeta:o}})}function aE(n){return n>=0?n:-n|0}function uE(n){let u=n._1,r=n._0;if(r.RE_EXN_ID===Hr.Tag)return tt(wl(u),st.$$const);if(r.RE_EXN_ID===$c.Tag)return u.TAG==="Var"?st.$$var(u.idx):st.schematic(u.schematic,u.allowed);if(r.RE_EXN_ID!==Xr.Tag||u.length!==1)return;let c=u[0];switch(c.TAG){case"String":return tt(wl(c._0),st.$$const);case"Var":case"Schematic":return}}let $l=st.Const,Vr=st.identity;function Ou(n,u){return{schemas:jc(n.schemas,u.schemas,(r,c,f)=>{if(c!==void 0){let o=c.count,m=c.allowed;return f!==void 0?{allowed:m,count:o+f.count|0}:{allowed:m,count:o}}if(f!==void 0)return{allowed:f.allowed,count:f.count};throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),vars:jc(n.vars,u.vars,(r,c,f)=>{if(c!==void 0)return f!==void 0?c+f|0:c;if(f!==void 0)return f;throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),const:n.const+u.const|0}}function Eu(n,u){return{schemas:ju(n.schemas,r=>({allowed:r.allowed,count:r.count*u|0})),vars:ju(n.vars,r=>r*u|0),const:n.const*u|0}}function rE(n,u){let r=new Map;return r.set(n,u),r}function iE(n,u){let r=" "+$l.opString+" ",f=wt(n.schemas)!==0?na(n.schemas).map(S=>{let v=S[1];return $l.formatMultiple(Zy(S[0],v.allowed,u),v.count)}).join(r):void 0,m=wt(n.vars)!==0?na(n.vars).map(S=>$l.formatMultiple(gm(S[0],u),S[1])).join(r):void 0,y=n.const!==0?$l.formatMultipleConst(n.const):void 0,p=$a([f,m,y]).join(r);return $l.openTerm+" "+p+" "+$l.closeTerm}function cE(n,u){return Fv(n**u|0,r=>{let c=[],f=r;for(let o=0;or[0]>r[1])}function fE(n,u){return qe(Gu(n,u,(r,c)=>r*c|0),0,(r,c)=>r+c|0)}function oE(n,u,r){let c=(m,h)=>{let y=Ze(Yp(m.schemas),void 0);return Ne(tt(st.Const.opInv(h.const,m.const),p=>_n(rE(y,st.$$const(p)))),xt)},f=(m,h)=>wt(m.schemas)===1&&wt(h.schemas)===0&&wt(m.vars)===0&&wt(h.vars)===0?Ze(ym(m.schemas,Ze(Yp(m.schemas),void 0)),void 0).count===1:!1,o=()=>{let m=jc(n.schemas,u.schemas,(v,R,U)=>{if(R!==void 0){let X=R.count,_=R.allowed;return U!==void 0?{allowed:_,count:X-U.count|0}:{allowed:_,count:X}}if(U!==void 0)return{allowed:U.allowed,count:-U.count|0};throw{RE_EXN_ID:Cr,_1:"belt map error",Error:new Error}}),h=na(m),y=h.map(v=>v[1].count),p=qe(y,0,(v,R)=>Ot(v,aE(R))),S=[];return Gc(tA(cE(p+1|0,h.length)),v=>{if(fE(v,y)===0)if(S.every(R=>!sE(v,R))){S.push(v);return}else return}),_n(qe(iA(S,(v,R)=>{let U=dc(h,v),X=U!==void 0?st.schematic(U[0],U[1].allowed):Vr;return new Map($a(Gu(h,R,(_,O)=>{if(O>0)return[_[0],Eu(X,O)]})))}),new Map,(v,R)=>Ky(v,R,Ou)))};return wt(n.schemas)===0&&wt(u.schemas)===0?_n(new Map):f(n,u)?c(n,u):f(u,n)?c(u,n):(n.const-u.const|0)===0?o():xt}function mE(n,u,r){let c=ea(dt($l.parseVar(u),st.$$var),"var"),f=ea(dt($l.parseSchema(r,u),p=>st.schematic(p[0],p[1])),"schematic"),o=ea(dt($l.parseConst,st.$$const),"const"),m=Ra(e1([c,f,o])),h=gt(m,p=>dt(Sm(Iy(ja($l.opString),m)),S=>qe(S,p,Ou))),y=Qc(h,ja($l.openTerm),ja($l.closeTerm));return vm(y,n)}function dE(n){return n}function hE(n,u){let r=qe(na(n.schemas).map(c=>{let f=c[1],o=f.count,m=c[0],h=u.get(m);return Eu(h!==void 0?h:st.schematic(m,f.allowed),o)}),Vr,Ou);return Ou(r,{schemas:Vr.schemas,vars:n.vars,const:n.const})}function pE(n,u,r){let c=r!==void 0?r:0,f=qe(na(n.vars).map(m=>{let h=m[1],y=m[0];if(y=u.length)return Eu(st.$$var(y-u.length|0),h);let p=Ze(u[y-c|0],void 0);if(p!==void 0)return Eu(p,h);throw{RE_EXN_ID:qr,_1:"index "+(y-c|0).toString()+" not of sort blah",Error:new Error}}),Vr,Ou),o=ju(n.schemas,m=>({allowed:yt(m.allowed,h=>{if(!(h<(c+u.length|0)))return h-(c+u.length|0)|0}),count:m.count}));return Ou(f,{schemas:o,vars:Vr.vars,const:n.const})}function yE(n){return wt(n.vars)>0?!0:n.const>0}function gE(n,u,r){let c=r!==void 0?r:0,f=pm(na(n.vars).map(m=>{let h=m[1],y=m[0];return y>=c?[y+u|0,h]:[y,h]}));return{schemas:ju(n.schemas,m=>({allowed:m.allowed.map(h=>h>=c?h+u|0:h),count:m.count})),vars:f,const:n.const}}let bE={Base:st,unify:oE,prettyPrint:iE,parse:mE,substitute:hE,upshift:gE,substDeBruijn:pE,concrete:yE,reduce:dE,coerce:uE},To=st.Const;function ry(n){let u=Ne(tt(n.count,c=>c>1?c:null),null),r=n.scope[n.idx];return r!==void 0&&n.scope.indexOf(r)===n.idx?b.jsxs("span",{children:[u,r],className:"term-metavar"}):b.jsxs("span",{children:[u,"\\",n.idx],className:"term-metavar-unnamed"})}function vE(n){return[b.jsx("span",{children:"(",className:"symbol-nat"},"-1"),n,b.jsx("span",{children:")",className:"symbol-nat"},"-2")]}function AE(n){let u=n.scope,r=n.atom,f=wt(r.schemas)!==0?na(r.schemas).map(S=>{let v=S[1],R=v.allowed.map((U,X)=>b.jsx(ry,{idx:U,scope:u}));return b.jsxs("span",{children:[v.count.toString()+"?",S[0],b.jsx("span",{children:$r(R,To.opString),className:"term-schematic-telescope"})],className:"term-schematic"})}):void 0,o=wt(r.vars),m;if(o!==0){let S=na(r.vars).map(v=>{let R=v[0];return b.jsx(ry,{idx:R,count:v[1],scope:u},R.toString())});m=$r(S,To.opString)}else m=void 0;let h,y=0;f!==void 0||m!==void 0?y=1:h=r.const,y===1&&(h=r.const>0?r.const:void 0);let p=$a([f,m,h]);return b.jsx("span",{children:vE($r(p,To.opString)),className:"term-compound"})}let _E={make:AE},L1={Atom:bE,AtomView:_E},SE=ft(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),X1=Ru(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),vc=Yr(),TE=["disjointness"];function EE(n,u){return n}function xE(n,u){return{factName:n.factName}}function GE(n){return[]}function NE(n,u,r){return n}function iy(n){let u=Rt(n),r=u[0];if(r.TAG==="Symbol"&&r.constructor)return[r.name,u[1].length]}function Y1(n){let u=Kc(n);if(u===void 0)return!1;let r=iy(u[0]),c=iy(u[1]);return r!==void 0&&c!==void 0?r[0]!==c[0]?!0:r[1]!==c[1]:!1}function jE(n,u,r,c){let f=Tn.prettyPrint(n.factName,u.localFactNames),o=X1.lookup(u,n.factName);return o!==void 0?o.vars.length!==0?{TAG:"Error",_0:"fact "+f+" is not a plain assumption"}:o.premises.length!==0?{TAG:"Error",_0:"fact "+f+" is not a plain assumption"}:Y1(o.conclusion)?{TAG:"Ok",_0:{factName:n.factName}}:{TAG:"Error",_0:"fact "+f+" is not a constructor disjointness"}:{TAG:"Error",_0:"no such fact: "+f}}function OE(n,u,r,c){return qe(yt(n.localFacts.map((f,o)=>[o,f]),f=>{let o=f[1],m=f[0];if(!(o.vars.length!==0||o.premises.length!==0||!Y1(o.conclusion)))return vc.atAssumption(m,[{TAG:"Action",_0:{TAG:"Text",_0:"disjointness"},_1:{factName:{TAG:"Local",index:m}},_2:void 0}])}),vc.emptyAttached(),vc.combine)}function RE(n,u,r,c,f,o){return"disjointness ".concat(Tn.prettyPrint(n.factName,c)).concat(zt)}function DE(n,u,r,c,f,o,m){let h=Tn.parse(n.trim(),f);if(h.TAG!=="Ok")return{TAG:"Error",_0:"Expected fact name"};let y=h._0;return{TAG:"Ok",_0:[{factName:y[0]},y[1]]}}let yl={Rule:SE,Context:X1,Results:vc,keywords:TE,substitute:EE,map:xE,subproofs:GE,setSubproof:NE,check:jE,apply:OE,prettyPrint:RE,parse:DE},$E=ft(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),Q1=Ru(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),Ac=Yr(),ME=["injectivity"];function wE(n,u){return n}function zE(n,u){return{factName:n.factName,subgoal:u(n.subgoal)}}function CE(n){return[[void 0,n.subgoal]]}function kE(n,u,r){return{factName:n.factName,subgoal:r}}function $m(n){let u=Kc(n);if(u===void 0)return;let r=Rt(u[0]),c=Rt(u[1]),f=r[0];if(f.TAG!=="Symbol"||!f.constructor)return;let o=c[0];if(o.TAG!=="Symbol"||!o.constructor)return;let m=c[1],h=r[1];if(f.name===o.name&&h.length===m.length)return Lc(h,m)}function Mm(n){return{vars:[],premises:[],conclusion:Rm(n[0],n[1])}}function BE(n,u,r,c){let f=Tn.prettyPrint(n.factName,u.localFactNames),o=Q1.lookup(u,n.factName);if(o===void 0)return{TAG:"Error",_0:"no such fact: "+f};if(o.vars.length!==0)return{TAG:"Error",_0:"fact "+f+" is not a plain assumption"};if(o.premises.length!==0)return{TAG:"Error",_0:"fact "+f+" is not a plain assumption"};let m=$m(o.conclusion);return m!==void 0?{TAG:"Ok",_0:{factName:n.factName,subgoal:c(n.subgoal,{vars:[],premises:m.map(Mm),conclusion:r})}}:{TAG:"Error",_0:"fact "+f+" is not a constructor equality"}}function UE(n,u,r,c){return qe(yt(n.localFacts.map((f,o)=>[o,f]),f=>{let o=f[1],m=f[0];if(o.vars.length!==0||o.premises.length!==0)return;let h=$m(o.conclusion);if(h===void 0)return;let y=[],p=h.map(Mm),S=o.conclusion,v={vars:y,premises:p,conclusion:S};return Ac.atAssumption(m,[{TAG:"Action",_0:{TAG:"Text",_0:"injectivity"},_1:{factName:{TAG:"Local",index:m},subgoal:c(v)},_2:void 0}])}),Ac.emptyAttached(),Ac.combine)}function qE(n,u,r,c,f,o){let m=f!==void 0?f:0;return"injectivity ".concat(Tn.prettyPrint(n.factName,c)).concat(zt).concat(o(n.subgoal,u,r,c,m)).concat(zt)}let HE=Dt("HOMethods.ConstructorInjectivity.InternalParseError");function VE(n,u,r,c,f,o,m){let h=Tn.parse(n.trim(),f);if(h.TAG!=="Ok")return{TAG:"Error",_0:"Expected fact name"};let y=h._0,p=m(y[1].trim(),r,c,f,o);if(p.TAG!=="Ok")return{TAG:"Error",_0:p._0};let S=p._0;return{TAG:"Ok",_0:[{factName:y[0],subgoal:S[0]},S[1]]}}let nl={Term:void 0,Judgment:void 0,Rule:$E,Context:Q1,Results:Ac,keywords:ME,substitute:wE,map:zE,subproofs:CE,setSubproof:kE,injectivityPairs:$m,mkPremiseRule:Mm,check:BE,apply:UE,prettyPrint:qE,InternalParseError:HE,parse:VE},cy=$u(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke});function LE(n,u){return p1(n.grammar)}function XE(n,u){let r=F_(n.trim());if(r.TAG!=="Ok")return{TAG:"Error",_0:r._0};let c=r._0,f=c[1],o=c[0];if(f!=="")return{TAG:"Error",_0:"Unable to read from: "+f};let m=h1(o);if(m.TAG!=="Ok")return{TAG:"Error",_0:m._0};let h=m._0;return{TAG:"Ok",_0:[{grammar:o,compiled:h},{facts:{},ruleStyle:void 0,grammar:h}]}}function YE(n){return b.jsx("pre",{children:p1(n.content.grammar)})}function QE(n){return b.jsxs("span",{children:[n,"."],className:"rule-binder"})}function ZE(n,u){let r=c=>{let f=T1(c.trim().concat("."));if(f.TAG!=="Ok")return{TAG:"Error",_0:f._0};let o=f._0,m=o[1];return m!==""?{TAG:"Error",_0:"trailing string after meta name: ".concat(m)}:(u(o[0]),{TAG:"Ok",_0:void 0})};return b.jsxs("span",{children:[b.jsx(qc.make,{label:n,onConfirm:r}),"."],className:"rule-binder"})}function vn(n){return b.jsx("span",{children:n,className:"term-op-lit"})}function KE(n,u){if(n==="constructor")return b.jsx("span",{children:u.slice(1),className:"term-"+n});if(n==="symbol"||n==="op-lit")switch(u){case"&&":return vn("∧");case"->":return vn("→");case"<->":return vn("↔");case"all":return vn("∀");case"bot":return vn("⊥");case"exists":return vn("∃");case"not":return vn("¬");case"top":return vn("⊤");case"||":return vn("∨");default:return b.jsx("span",{children:u,className:"term-symbol"})}else return b.jsx("span",{children:u,className:"term-"+n})}function Z1(n,u){return b.jsx(xe.Fragment,{children:n},u.toString())}function JE(n){return n.map(Z1)}function FE(n){return Dl(n.map((r,c)=>c===0?[r]:[" ",r])).map(Z1)}function WE(n){return b.jsxs("span",{children:[b.jsx("span",{children:"(",className:"term-lambda-punct"}),n,b.jsx("span",{children:")",className:"term-lambda-punct"})]})}let sy={leaf:KE,seq:JE,spaced:FE,parens:WE},IE=y1(sy)(R1(sy));function PE(n){return IE.prettyPrintWithGrammar(n.term,!1,n.grammar,n.scope)}let ex=PE;const K1=Object.freeze(Object.defineProperty({__proto__:null,make:ex,makeEditableMeta:ZE,makeMeta:QE},Symbol.toStringTag,{value:"Module"}));function tx(n){return u=>{let r=$u(n)(u),c=m=>{switch(m){case"Gentzen":return{TAG:"Ok",_0:["Gentzen",{facts:{},ruleStyle:"Gentzen",grammar:n.emptyGrammar}]};case"Hybrid":return{TAG:"Ok",_0:["Hybrid",{facts:{},ruleStyle:"Hybrid",grammar:n.emptyGrammar}]};case"Linear":return{TAG:"Ok",_0:["Linear",{facts:{},ruleStyle:"Linear",grammar:n.emptyGrammar}]};default:return{TAG:"Error",_0:"unknown rule style"}}},f=m=>{switch(m){case"Gentzen":return"Gentzen";case"Linear":return"Linear";case"Hybrid":return"Hybrid"}};return{Ports:r,deserialise:c,serialise:f,make:m=>{let h=xe.useState(()=>m.content),y=h[1],p=h[0],S=v=>{let U=v.target.value,X=c(U);if(X.TAG!=="Ok")return;let _=X._0[0];y(O=>_),m.onChange(_,{facts:{},ruleStyle:_,grammar:n.emptyGrammar})};return b.jsxs(b.Fragment,{children:[["Gentzen","Linear","Hybrid"].map(v=>b.jsx("input",{id:"style_".concat(f(v)),checked:p===v,name:"style",type:"radio",value:f(v),onChange:S},f(v))),b.jsx("p",{children:f(p)})]})}}}}function lx(n){return u=>{let r=ft(n)(u),c=Ru(n)(u),f=Yr(),o=["rewrite","rev_rewrite"],m=T=>[["NewGoal",T.newGoal]].concat(T.subgoals.map((j,N)=>[{TAG:"Subgoal",_0:N},j])),h=(T,j,N)=>typeof j!="object"?{ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values,newGoal:N,subgoals:T.subgoals}:{ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values,newGoal:T.newGoal,subgoals:Rc(T.subgoals,j._0,N)},y=(T,j)=>({ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values.map(N=>n.substitute(N,j)),newGoal:T.newGoal,subgoals:T.subgoals}),p=(T,j)=>({ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values,newGoal:j(T.newGoal),subgoals:T.subgoals.map(j)}),S=(T,j,N)=>T==="Forward"?[j,N]:[N,j],v=(T,j,N,B)=>{let J=Tn.prettyPrint(T.ruleName,j.localFactNames),k=c.lookup(j,T.ruleName);if(k===void 0)return{TAG:"Error",_0:"no such rule: "+J};if(T.values.length!==k.vars.length)return{TAG:"Error",_0:"wrong number of instantiations for rule "+J};let E=u.locate(N,T.path);if(E===void 0)return{TAG:"Error",_0:"invalid rewrite path"};let D=E[1],$=E[0],Q=r.instantiate(k,T.values),W=Q.premises,H=u.asEquation(Q.conclusion);if(H===void 0)return{TAG:"Error",_0:"rule "+J+" is not an equation"};let C=S(T.direction,H[0],H[1]),M=n.upshift(C[0],D.length,void 0);if(!n.equivalent(M,$))return{TAG:"Error",_0:"instantiated left-hand side ("+n.prettyPrint(M,n.emptyGrammar,j.fixes)+`) does not match the term at the given path - (`+n.prettyPrint(N,n.emptyGrammar,R.fixes)+")"};let x=u.replaceAt(D,S.path,n.reduce(n.upshift(V[1],b.length,void 0)));return L.length!==S.subgoals.length?{TAG:"Error",_0:"subgoal count mismatch"}:{TAG:"Ok",_0:{ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:C(S.newGoal,{vars:[],premises:[],conclusion:x}),subgoals:S.subgoals.map((z,Z)=>C(z,L[Z]))}}},$=(S,R,D,C)=>{let F=(E,b)=>{if(u.asEquation(b.conclusion)===void 0)return[];let H=r.genSchemaInsts(b,D,S.fixes),L=r.instantiate(b,H),w=L.premises,V=u.asEquation(L.conclusion);if(V===void 0)return[];let q=V[1],x=V[0];return["Forward","Backward"].flatMap(z=>{let Z=T(z,x,q),ae=Z[1],ue=Z[0];return n.concrete(ue)?Et(u.positions(R),G=>{let Y=G[2],te=G[0],ne=Jv(n.unify(n.upshift(ue,Y.length,void 0),G[1],he(D)));if(ne===void 0)return;let re=be(ne),fe=H.map(En=>n.reduce(n.substitute(En,re))),de=n.reduce(n.substitute(n.upshift(ae,Y.length,void 0),re)),Ue=u.replaceAt(R,te,de),Tn={vars:[],premises:[],conclusion:Ue},ua=w.map(En=>r.substitute(En,re));return[{ruleName:E,direction:z,path:te,values:fe,newGoal:C(Tn),subgoals:ua.map(C)},re]}):[]})},B=E=>E==="Forward"?"":" ⤺";return ke(c.facts(S).map(E=>{let b=E[0],N=Zl.prettyPrint(b,S.localFactNames),H=F(b,E[1]),L=H.length,w;if(L!==1)w=L!==0?[{TAG:"Group",_0:"rewrite "+N,_1:H.map(V=>{let q=V[0];return{TAG:"Action",_0:u.prettyPrintPath(q.path)+" "+B(q.direction),_1:q,_2:V[1]}})}]:[];else{let V=H[0],q=V[0];w=[{TAG:"Action",_0:"rewrite "+N+" "+B(q.direction),_1:q,_2:V[1]}]}return{goal:w,assumptions:[]}}),f.emptyAttached(),f.combine)},k=(S,R,D,C,F,B)=>{let E=F!==void 0?F:0,b=S.values.map(N=>n.prettyPrint(N,R,D));return(S.direction==="Backward"?"rev_rewrite":"rewrite").concat(" (").concat([Zl.prettyPrint(S.ruleName,C)].concat(b).join(" ")).concat(") ").concat(u.prettyPrintPath(S.path)).concat(" {").concat(S.subgoals.length>0?Mt:"").concat(S.subgoals.map(N=>B(N,R,D,C,E+2|0)).join(Mt)).concat("}").concat(Mt).concat(B(S.newGoal,R,D,C,E)).concat(Mt)},Q=Rt("Rewrite.Make(Term)(Judgment).InternalParseError");return{Rule:r,Context:c,Results:f,keywords:o,subproofs:m,setSubproof:h,substitute:y,map:p,orient:T,check:A,apply:$,prettyPrint:k,InternalParseError:Q,parse:(S,R,D,C,F,B,E)=>{let b=R==="rev_rewrite"?"Backward":"Forward",N=S.trim();if(!De(N[0],"("))return{TAG:"Error",_0:"Expected ("};let H=Zl.parse(N.slice(1).trim(),F);if(H.TAG!=="Ok")return{TAG:"Error",_0:H._0};let L=H._0;N=L[1];let w=[],V={TAG:"Error",_0:""};for(;V=n.parse(N,D,C,he(B)),An(V);){let z=Kl(V);w.push(z[0]),N=z[1].trim()}if(!De(N[0],")"))return{TAG:"Error",_0:") or term expected"};N=N.slice(1).trim();let q=u.parsePath(N);N=q[1].trim();let x=[];if(!De(N[0],"{"))return{TAG:"Error",_0:"{ expected"};N=N.slice(1).trim();try{for(;Yc(N[0],"}");){let Z=E(N,D,C,F,B);if(Z.TAG==="Ok"){let ae=Z._0;x.push(ae[0]),N=ae[1].trim()}else throw{RE_EXN_ID:Q,_1:Z._0,Error:new Error}}if(!De(N[0],"}"))return{TAG:"Error",_0:"} or subgoal proof expected"};N=N.slice(1).trim();let z=E(N,D,C,F,B);if(z.TAG==="Ok"){let Z=z._0;return N=Z[1].trim(),{TAG:"Ok",_0:[{ruleName:L[0],direction:b,path:q[0],values:w,newGoal:Z[0],subgoals:x},N]}}throw{RE_EXN_ID:Q,_1:z._0,Error:new Error}}catch(z){let Z=la(z);if(Z.RE_EXN_ID===Q)return{TAG:"Error",_0:Z._1};throw Z}},updateAtKey:(S,R,D)=>{let C=S.subgoals.slice();return C[R]=D(Qe(C[R],void 0)),{ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:S.newGoal,subgoals:C}},updateGoal:(S,R)=>({ruleName:S.ruleName,direction:S.direction,path:S.path,values:S.values,newGoal:R(S.newGoal),subgoals:S.subgoals})}}}function lx(n){return u=>{let r=Ru(n)(u),c=tx(n)(u),f=m=>{let h=m.method.direction,y;return y=h==="Forward"?"→":"←",v.jsxs("span",{children:[v.jsx(Mm.make,{assms:m.ctx.localFactNames,ruleRef:m.method.ruleName}),v.jsx("sup",{children:y})],className:"rule-rulename-rewrite"})};return{Context:r,Method:c,summary:f,make:m=>(h=>v.jsxs("div",{children:[v.jsx("span",{className:"typcn typcn-media-play"}),f(h),h.method.subgoals.length>0?v.jsx("ul",{children:h.method.subgoals.map((y,p)=>v.jsx("li",{children:Re.createElement(m,{proof:y,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(T,A)=>h.onChange(c.updateAtKey(h.method,p,$=>T),A)})},String(p))),className:"subgoals"}):"",v.jsx("div",{children:Re.createElement(m,{proof:h.method.newGoal,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(y,p)=>h.onChange(c.updateGoal(h.method,T=>y),p)}),className:"proof-denest"})]}))}}}function J1(n){return v.jsxs(v.Fragment,{children:[v.jsx("span",{children:"disjoint",className:"rule-rulename-keyword"}),v.jsx("sup",{children:v.jsx(Mm.make,{assms:n.ctx.localFactNames,ruleRef:n.method.factName})})]})}function nx(n){return u=>v.jsxs("div",{children:[v.jsx("span",{className:"typcn typcn-media-play"}),J1(u)]})}let fy={summary:J1,make:nx};function F1(n){return v.jsxs(v.Fragment,{children:[v.jsx("span",{children:"injective",className:"rule-rulename-keyword"}),v.jsx("sup",{children:v.jsx(Mm.make,{assms:n.ctx.localFactNames,ruleRef:n.method.factName})})]})}function ax(n){return u=>v.jsxs("div",{children:[v.jsx("span",{className:"typcn typcn-media-play"}),F1(u),v.jsx("div",{children:Re.createElement(n,{proof:u.method.subgoal,ctx:u.ctx,ruleStyle:u.ruleStyle,grammar:u.grammar,gen:u.gen,onChange:(r,c)=>u.onChange(el.setSubproof(u.method,void 0,r),c)}),className:"proof-denest"})]})}let oy={summary:F1,make:ax};function wm(n){return u=>(r=>({TermView:r,make:f=>r.make({term:f.judgment,grammar:f.grammar,scope:f.scope})}))}let ux=wm()({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(Y1),W1=st(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),my=Du(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(ux),dy=$u(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke});function zm(n,u){return n+"§"+u.toString()}function I1(n){return Na(n,u=>"§"+u.toString())}function hy(n){let u=Ot(n.conclusion),r=u[0];if(r.TAG==="Symbol")return[r.name,u[1].length]}function py(n){return Object.values(ke(Et(Object.entries(n),u=>{let r=u[1],c=u[0];return tt(hy(r),f=>[c,r,f])}),{},(u,r)=>{let c=r[2],f=zm(c[0],c[1]);return u[f]=jl([[[r[0],r[1]]],Ee(u[f],[])]),u})).map(u=>{let r=Qe(u[0],void 0),c=Qe(hy(r[1]),void 0);return{name:c[0],arity:c[1],rules:u}})}function rx(n,u){let r=n.arity,c=n.name,f=u.length,o=Kp(u,p=>p.name===c?p.arity===r:!1),m=(p,T)=>Kp(u,A=>A.name===p?A.arity===T:!1),y=u.flatMap(p=>p.rules).map(p=>{let T=p[1],A=T.vars.length,$=Et(T.premises,j=>{let S=Ot(j.conclusion),R=S[1],D=S[0];if(D.TAG!=="Symbol")return;let C=m(D.name,R.length);return{vars:j.vars,premises:j.premises,conclusion:_u({TAG:"Var",idx:((A+j.vars.length|0)+r|0)+C|0},R)}}),k=Ot(T.conclusion),Q=k[1],_=k[0],O;if(_.TAG==="Symbol")O=m(_.name,Q.length);else throw{RE_EXN_ID:Cr,_1:"Constructor conclusion must have a Symbol head",Error:new Error};return{vars:T.vars,premises:T.premises.concat($),conclusion:_u({TAG:"Var",idx:(A+r|0)+O|0},Q)}});return{vars:I1(r).concat(Na(f,p=>"§P"+p.toString())),premises:jl([[{vars:[],premises:[],conclusion:_u({TAG:"Symbol",name:c,constructor:!1},Na(r,p=>({TAG:"Var",idx:p})))}],y]),conclusion:_u({TAG:"Var",idx:r+o|0},Na(r,p=>({TAG:"Var",idx:p})))}}let ix=ja,cx={cmp:ix};function sx(n){let u=Ot(n.conclusion),r=u[0];if(r.TAG==="Symbol"&&!r.constructor)return[r.name,u[1].length]}function fx(n,u){return u[0]===n.name?u[1]===n.arity:!1}function ox(n){return n.rules.flatMap(u=>Et(u[1].premises,sx)).filter(u=>!fx(n,u))}function mx(n,u,r){for(;;){let c=u,f=n;if(f.length===0)return c;let o=Qe(f[0],void 0),m=o[1],h=o[0],y=f.slice(1),p=zm(h,m);if(Cc(c,p)){n=y;continue}let T=zc(c,p),A=Ee(tt(r.find($=>$.name===h?$.arity===m:!1),ox),[]);u=T,n=y.concat(A)}}function dx(n,u){let r=mx([[n.name,n.arity]],Ql(cx),u);return u.filter(c=>Cc(r,zm(c.name,c.arity)))}function hx(n){let u=n.arity,r=n.rules.map(c=>{let o=[c[0],c[1]][1],m=o.vars.length,y=Ot(o.conclusion)[1];if(y.length!==u)throw{RE_EXN_ID:"Assert_failure",_1:["HOInductiveSet.res",190,4],Error:new Error};let p=y.map((T,A)=>({vars:[],premises:[],conclusion:Om({TAG:"Var",idx:m+A|0},T)}));return{vars:o.vars,premises:p.concat(o.premises),conclusion:{TAG:"Var",idx:m+u|0}}});return{vars:I1(u).concat(["§P"]),premises:jl([[{vars:[],premises:[],conclusion:_u({TAG:"Symbol",name:n.name,constructor:!1},Na(u,c=>({TAG:"Var",idx:c})))}],r]),conclusion:{TAG:"Var",idx:u}}}function P1(n){return Object.fromEntries(py(n).flatMap(u=>{let r=dx(u,py(n)),c=rx(u,r),f=hx(u);return[["§induction-"+u.name,c],["§cases-"+u.name,f]]}))}function px(n,u){return Object.entries(n.rules).map(r=>W1.prettyPrintTopLevel(r[1],r[0],u.grammar,void 0)).join(` -`)}function yx(n,u){let r=n,c=!0,f={},o={TAG:"Error",_0:"impossible"};for(;c;){let m=W1.parseTopLevel(r,u.grammar,void 0,[]);if(m.TAG==="Ok"){let h=m._0,y=h[1],p=h[0],T=p[1];T.trim()===""?(c=!1,o={TAG:"Error",_0:"Rule given with no name"}):(f[T]=p[0],y.trim()===""?(c=!1,o={TAG:"Ok",_0:f}):r=y)}else c=!1,o={TAG:"Error",_0:m._0}}return Rl(o,m=>[{rules:m},{facts:Object.assign(Object.assign({},m),P1(m)),ruleStyle:void 0,grammar:O1}])}function gx(n){return v.jsxs("div",{children:[Object.entries(n.content.rules).map((u,r)=>v.jsx(my.make,{rule:u[1],style:Ee(n.imports.ruleStyle,"Hybrid"),grammar:n.imports.grammar,scope:[],children:v.jsx("span",{children:u[0],className:"rule-rulename-global"})},String(r))),v.jsx("section",{children:v.jsxs("details",{children:[v.jsx("summary",{children:v.jsx("header",{children:v.jsx("h1",{children:"Derived Rules"})})}),Object.entries(P1(n.content.rules)).map((u,r)=>v.jsx(my.make,{rule:u[1],style:Ee(n.imports.ruleStyle,"Hybrid"),grammar:n.imports.grammar,scope:[],children:v.jsx("span",{children:u[0],className:"rule-rulename-global"})},String(r)))]}),className:"block"})],className:"axiom-set axiom-set-".concat(String(Ee(n.imports.ruleStyle,"Hybrid")))})}function bx(n,u){Object.values(n).forEach(r=>u(r))}function vx(n){return u=>(r=>{let c=st(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete}),f=Du(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete})(r),o=$u(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete}),m=O=>ke(O.premises,Ra(O.vars),(j,S)=>Ga(j,Ra(S.vars))),h=O=>{if(O.TAG!=="Compound")return;let j=O.subexps;if(j.length!==2)return;let S=j[0];if(S.TAG!=="Atom")return;let R=S._0,D=j[1];if(D.TAG!=="Atom")return;let C=D._0;if(R._0.RE_EXN_ID===So.Tag&&C._0.RE_EXN_ID===qr.Tag)return[R._1,C._1]},y=Rt("StringAxiomSet.Make(Atom)(Term)(JudgmentView).InvalidStringInductionPattern"),p=O=>St.getOrElse(h(O),()=>{throw{RE_EXN_ID:y,Error:new Error}}),T=(O,j)=>({TAG:"Compound",subexps:[O,j]}),A=(O,j)=>{let S=j.map(D=>D.name),R=[O.name].concat(M_(Vo(Ra(O.rules.flatMap(D=>Et(D.premises,C=>St.map(h(C.conclusion),F=>F[1])).filter(C=>St.isSome(S.find(F=>F===C))))),O.name)));return Ma(R.map(D=>j.find(C=>C.name===D)))},$=(O,j)=>{let S=ke(j.flatMap(z=>z.rules),void 0,(z,Z)=>Ga(z,m(Z))),R=z=>{for(;;){let Z=z;if(!kl(S,Z))return Z;z=Z+"'"}},D=j.map(z=>R("P"+z.name)),C=R("b"),F=R("x"),B=R("a"),E=D.concat([C,F,B]),b=E.findIndex(z=>z===F),N=E.findIndex(z=>z===B),H=E.findIndex(z=>z===C),L=(z,Z,ae)=>[{TAG:"Var",idx:Z}].concat(z).concat([{TAG:"Var",idx:ae}]),w=z=>Dy(j,Z=>z===Z.name),V=(z,Z)=>{let ae=Z+z.vars.length|0,ue=p(z.conclusion),G=z.premises.filter(ne=>St.isSome(St.flatMap(h(ne.conclusion),re=>w(re[1])))).map(ne=>V(ne,ae)),Y=St.getExn(w(ue[1]),void 0),te={TAG:"Atom",_0:So.wrap(L(ue[0],N+ae|0,H+ae|0))};return{vars:z.vars,premises:z.premises.concat(G),conclusion:{TAG:"Compound",subexps:[te,{TAG:"Var",idx:Y+ae|0}]}}},q={TAG:"Atom",_0:qr.wrap(O.name)},x={TAG:"Atom",_0:So.wrap(L([{TAG:"Var",idx:b}],N,H))};return{vars:E,premises:[{vars:[],premises:[],conclusion:{TAG:"Compound",subexps:[{TAG:"Var",idx:b},q]}}].concat(j.flatMap(z=>z.rules.map(Z=>V(Z,0)))),conclusion:{TAG:"Compound",subexps:[x,{TAG:"Var",idx:0}]}}};return{Rule:c,RuleView:f,Ports:o,$$Set:void 0,varsInRule:m,destructureOpt:h,InvalidStringInductionPattern:y,destructure:p,structure:T,findMentionedRuleGroups:A,derive:$,deserialise:(O,j)=>{let S=R=>{let D=R,C=!0,F={},B={TAG:"Error",_0:"impossible"};for(;C;){let E=c.parseTopLevel(D,j.grammar,void 0,[]);if(E.TAG==="Ok"){let b=E._0,N=b[1],H=b[0],L=H[1];L.trim()===""?(C=!1,B={TAG:"Error",_0:"Rule given with no name"}):(F[L]=H[0],N.trim()===""?(C=!1,B={TAG:"Ok",_0:F}):D=N)}else C=!1,B={TAG:"Error",_0:E._0}}return B};return Wy.map(S(O),R=>{let D={};bx(R,B=>{let E=h(B.conclusion);if(E===void 0)return;let b=E[1],N=D[b];N!==void 0?N.push(B):D[b]=[B]});let C=Object.entries(D).map(B=>({name:B[0],rules:B[1]})),F={};return C.forEach(B=>{F[B.name+"_induct"]=$(B,[B]);let E=A(B,C);if(E.length>1){F[B.name+"_mutualInduct"]=$(B,E);return}}),[{raw:R,derived:F},{facts:Object.assign(Object.assign({},R),F),ruleStyle:void 0,grammar:u.emptyGrammar}]})},serialise:(O,j)=>Object.entries(O.raw).map(S=>c.prettyPrintTopLevel(S[1],S[0],j.grammar,void 0)).join(` -`),make:O=>{let j=S=>v.jsx("div",{children:Object.entries(S).map((R,D)=>v.jsx(f.make,{rule:R[1],style:St.getOr(O.imports.ruleStyle,"Hybrid"),grammar:O.imports.grammar,scope:[],children:R[0]},String(D))),className:"axiom-set axiom-set-".concat(String(St.getOr(O.imports.ruleStyle,"Hybrid")))});return v.jsxs("div",{children:[j(O.content.raw),v.jsx("p",{children:"derived"}),j(O.content.derived)]})}}})}let yy=Fc(tT)(eT)(US)(qS),gy=Fc(_n)(z1)(yy.Atom)(yy.AtomView),Ll=H1.Atom,by=Ll.Base,Ax=H1.AtomView,vy=Fc({Base:{Tag:by.Tag,wrap:by.wrap},unify:Ll.unify,prettyPrint:Ll.prettyPrint,parse:Ll.parse,substitute:Ll.substitute,upshift:Ll.upshift,substDeBruijn:Ll.substDeBruijn,concrete:Ll.concrete,reduce:Ll.reduce,coerce:Ll.coerce})({make:Ax.make})(gy.Atom)(gy.AtomView),Cm=Fc({Base:VT,unify:pn.unify,prettyPrint:pn.prettyPrint,parse:pn.parse,substitute:pn.substitute,upshift:pn.upshift,substDeBruijn:pn.substDeBruijn,concrete:pn.concrete,reduce:pn.reduce,coerce:pn.coerce})(PT)(vy.Atom)(vy.AtomView),km=wm()({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(Y1),Ac=UT(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km),Ay=Ac.Ports,_x=Mu({Ports:{combine:Ay.combine,empty:Ay.empty},serialise:Ac.serialise,deserialise:Ac.deserialise,make:Ac.make}),Sx=Mu({Ports:{combine:dy.combine,empty:dy.empty},serialise:px,deserialise:yx,make:gx}),Tx=Mu({Ports:{combine:cy.combine,empty:cy.empty},serialise:VE,deserialise:XE,make:LE}),Yo=lx(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke,asEquation:Jc,locate:E1,replaceAt:x1,positions:G1,prettyPrintPath:N1,parsePath:j1}),hl=Yo.Method,Qo=wa(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:dl.Rule,Context:dl.Context,Results:dl.Results,keywords:dl.keywords,substitute:dl.substitute,check:dl.check,apply:dl.apply,map:dl.map,subproofs:dl.subproofs,setSubproof:dl.setSubproof,parse:dl.parse,prettyPrint:dl.prettyPrint},make:fy.make,summary:fy.summary})({Method:{Rule:el.Rule,Context:el.Context,Results:el.Results,keywords:el.keywords,substitute:el.substitute,check:el.check,apply:el.apply,map:el.map,subproofs:el.subproofs,setSubproof:el.setSubproof,parse:el.parse,prettyPrint:el.prettyPrint},make:oy.make,summary:oy.summary}),pl=Qo.Method,Zo=wa(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:hl.Rule,Context:hl.Context,Results:hl.Results,keywords:hl.keywords,substitute:hl.substitute,check:hl.check,apply:hl.apply,map:hl.map,subproofs:hl.subproofs,setSubproof:hl.setSubproof,parse:hl.parse,prettyPrint:hl.prettyPrint},make:Yo.make,summary:Yo.summary})({Method:{Rule:pl.Rule,Context:pl.Context,Results:pl.Results,keywords:pl.keywords,substitute:pl.substitute,check:pl.check,apply:pl.apply,map:pl.map,subproofs:pl.subproofs,setSubproof:pl.setSubproof,parse:pl.parse,prettyPrint:pl.prettyPrint},make:Qo.make,summary:Qo.summary}),yl=Zo.Method,Ko=Q1(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),gl=Ko.Method,Jo=K1(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km),bl=Jo.Method,Fo=wa(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:gl.Rule,Context:gl.Context,Results:gl.Results,keywords:gl.keywords,substitute:gl.substitute,check:gl.check,apply:gl.apply,map:gl.map,subproofs:gl.subproofs,setSubproof:gl.setSubproof,parse:gl.parse,prettyPrint:gl.prettyPrint},make:Ko.make,summary:Ko.summary})({Method:{Rule:bl.Rule,Context:bl.Context,Results:bl.Results,keywords:bl.keywords,substitute:bl.substitute,check:bl.check,apply:bl.apply,map:bl.map,subproofs:bl.subproofs,setSubproof:bl.setSubproof,parse:bl.parse,prettyPrint:bl.prettyPrint},make:Jo.make,summary:Jo.summary}),vl=Fo.Method,Wo=wa(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:yl.Rule,Context:yl.Context,Results:yl.Results,keywords:yl.keywords,substitute:yl.substitute,check:yl.check,apply:yl.apply,map:yl.map,subproofs:yl.subproofs,setSubproof:yl.setSubproof,parse:yl.parse,prettyPrint:yl.prettyPrint},make:Zo.make,summary:Zo.summary})({Method:{Rule:vl.Rule,Context:vl.Context,Results:vl.Results,keywords:vl.keywords,substitute:vl.substitute,check:vl.check,apply:vl.apply,map:vl.map,subproofs:vl.subproofs,setSubproof:vl.setSubproof,parse:vl.parse,prettyPrint:vl.prettyPrint},make:Fo.make,summary:Fo.summary}),Al=Wo.Method,Io=Z1(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),_l=Io.Method,Po=wa(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:Al.Rule,Context:Al.Context,Results:Al.Results,keywords:Al.keywords,substitute:Al.substitute,check:Al.check,apply:Al.apply,map:Al.map,subproofs:Al.subproofs,setSubproof:Al.setSubproof,parse:Al.parse,prettyPrint:Al.prettyPrint},make:Wo.make,summary:Wo.summary})({Method:{Rule:_l.Rule,Context:_l.Context,Results:_l.Results,keywords:_l.keywords,substitute:_l.substitute,check:_l.check,apply:_l.apply,map:_l.map,subproofs:_l.subproofs,setSubproof:_l.setSubproof,parse:_l.parse,prettyPrint:_l.prettyPrint},make:Io.make,summary:Io.summary}),Sl=Po.Method,_c=U1(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km)({Method:{Rule:Sl.Rule,Context:Sl.Context,Results:Sl.Results,keywords:Sl.keywords,substitute:Sl.substitute,check:Sl.check,apply:Sl.apply,map:Sl.map,subproofs:Sl.subproofs,setSubproof:Sl.setSubproof,parse:Sl.parse,prettyPrint:Sl.prettyPrint},make:Po.make,summary:Po.summary}),_y=_c.Ports,Ex=Mu({Ports:{combine:_y.combine,empty:_y.empty},serialise:_c.serialise,deserialise:_c.deserialise,make:_c.make}),xx=ex(ft)({substitute:Me,equivalent:Ze,unify:Je,substDeBruijn:Xe,reduce:Ve,upshift:$e,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),Vl=Cm.Atom,ie=p_({Base:Vl.Base,unify:Vl.unify,prettyPrint:Vl.prettyPrint,parse:Vl.parse,substitute:Vl.substitute,upshift:Vl.upshift,substDeBruijn:Vl.substDeBruijn,concrete:Vl.concrete,reduce:Vl.reduce,coerce:Vl.coerce}),Xl=Cm.Atom,Gx=lE({Base:Xl.Base,unify:Xl.unify,prettyPrint:Xl.prettyPrint,parse:Xl.parse,substitute:Xl.substitute,upshift:Xl.upshift,substDeBruijn:Xl.substDeBruijn,concrete:Xl.concrete,reduce:Xl.reduce,coerce:Xl.coerce})(Cm.AtomView)(ie),Bm=wm()({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete})(Gx),Sc=vx()(ie)(Bm),Sy=Sc.Ports,Nx=Mu({Ports:{combine:Sy.combine,empty:Sy.empty},serialise:Sc.serialise,deserialise:Sc.deserialise,make:Sc.make}),em=Q1(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete}),Tl=em.Method,tm=K1(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete})(Bm),El=tm.Method,lm=wa(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete})({Method:{Rule:Tl.Rule,Context:Tl.Context,Results:Tl.Results,keywords:Tl.keywords,substitute:Tl.substitute,check:Tl.check,apply:Tl.apply,map:Tl.map,subproofs:Tl.subproofs,setSubproof:Tl.setSubproof,parse:Tl.parse,prettyPrint:Tl.prettyPrint},make:em.make,summary:em.summary})({Method:{Rule:El.Rule,Context:El.Context,Results:El.Results,keywords:El.keywords,substitute:El.substitute,check:El.check,apply:El.apply,map:El.map,subproofs:El.subproofs,setSubproof:El.setSubproof,parse:El.parse,prettyPrint:El.prettyPrint},make:tm.make,summary:tm.summary}),xl=lm.Method,nm=Z1(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete}),Gl=nm.Method,am=wa(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete})({Method:{Rule:xl.Rule,Context:xl.Context,Results:xl.Results,keywords:xl.keywords,substitute:xl.substitute,check:xl.check,apply:xl.apply,map:xl.map,subproofs:xl.subproofs,setSubproof:xl.setSubproof,parse:xl.parse,prettyPrint:xl.prettyPrint},make:lm.make,summary:lm.summary})({Method:{Rule:Gl.Rule,Context:Gl.Context,Results:Gl.Results,keywords:Gl.keywords,substitute:Gl.substitute,check:Gl.check,apply:Gl.apply,map:Gl.map,subproofs:Gl.subproofs,setSubproof:Gl.setSubproof,parse:Gl.parse,prettyPrint:Gl.prettyPrint},make:nm.make,summary:nm.summary}),Nl=am.Method,Tc=U1(ie)({substitute:ie.substitute,equivalent:ie.equivalent,unify:ie.unify,substDeBruijn:ie.substDeBruijn,reduce:ie.reduce,upshift:ie.upshift,mapTerms:ie.mapTerms,parse:ie.parse,prettyPrint:ie.prettyPrint,concrete:ie.concrete})(Bm)({Method:{Rule:Nl.Rule,Context:Nl.Context,Results:Nl.Results,keywords:Nl.keywords,substitute:Nl.substitute,check:Nl.check,apply:Nl.apply,map:Nl.map,subproofs:Nl.subproofs,setSubproof:Nl.setSubproof,parse:Nl.parse,prettyPrint:Nl.prettyPrint},make:am.make,summary:am.summary}),Ty=Tc.Ports,jx=Mu({Ports:{combine:Ty.combine,empty:Ty.empty},serialise:Tc.serialise,deserialise:Tc.deserialise,make:Tc.make});var xo={exports:{}},jr={},Go={exports:{}},No={};var Ey;function Ox(){return Ey||(Ey=1,(function(n){function u(x,z){var Z=x.length;x.push(z);e:for(;0>>1,ue=x[ae];if(0>>1;aef(te,Z))nef(re,te)?(x[ae]=re,x[ne]=Z,ae=ne):(x[ae]=te,x[Y]=Z,ae=Y);else if(nef(re,Z))x[ae]=re,x[ne]=Z,ae=ne;else break e}}return z}function f(x,z){var Z=x.sortIndex-z.sortIndex;return Z!==0?Z:x.id-z.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;n.unstable_now=function(){return o.now()}}else{var m=Date,h=m.now();n.unstable_now=function(){return m.now()-h}}var y=[],p=[],T=1,A=null,$=3,k=!1,Q=!1,_=!1,O=!1,j=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;function D(x){for(var z=r(p);z!==null;){if(z.callback===null)c(p);else if(z.startTime<=x)c(p),z.sortIndex=z.expirationTime,u(y,z);else break;z=r(p)}}function C(x){if(_=!1,D(x),!Q)if(r(y)!==null)Q=!0,F||(F=!0,L());else{var z=r(p);z!==null&&q(C,z.startTime-x)}}var F=!1,B=-1,E=5,b=-1;function N(){return O?!0:!(n.unstable_now()-bx&&N());){var ae=A.callback;if(typeof ae=="function"){A.callback=null,$=A.priorityLevel;var ue=ae(A.expirationTime<=x);if(x=n.unstable_now(),typeof ue=="function"){A.callback=ue,D(x),z=!0;break t}A===r(y)&&c(y),D(x)}else c(y);A=r(y)}if(A!==null)z=!0;else{var G=r(p);G!==null&&q(C,G.startTime-x),z=!1}}break e}finally{A=null,$=Z,k=!1}z=void 0}}finally{z?L():F=!1}}}var L;if(typeof R=="function")L=function(){R(H)};else if(typeof MessageChannel<"u"){var w=new MessageChannel,V=w.port2;w.port1.onmessage=H,L=function(){V.postMessage(null)}}else L=function(){j(H,0)};function q(x,z){B=j(function(){x(n.unstable_now())},z)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(x){x.callback=null},n.unstable_forceFrameRate=function(x){0>x||125ae?(x.sortIndex=Z,u(p,x),r(y)===null&&x===r(p)&&(_?(S(B),B=-1):_=!0,q(C,Z-ae))):(x.sortIndex=ue,u(y,x),Q||k||(Q=!0,F||(F=!0,L()))),x},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(x){var z=$;return function(){var Z=$;$=z;try{return x.apply(this,arguments)}finally{$=Z}}}})(No)),No}var xy;function Rx(){return xy||(xy=1,Go.exports=Ox()),Go.exports}var Gy;function Dx(){if(Gy)return jr;Gy=1;var n=Rx(),u=Rm(),r=B1();function c(e){var t="https://react.dev/errors/"+e;if(1ue||(e.current=ae[ue],ae[ue]=null,ue--)}function te(e,t){ue++,ae[ue]=e.current,e.current=t}var ne=G(null),re=G(null),fe=G(null),de=G(null);function Ue(e,t){switch(te(fe,t),te(re,e),te(ne,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?cp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=cp(t),e=sp(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Y(ne),te(ne,e)}function Le(){Y(ne),Y(re),Y(fe)}function Sn(e){e.memoizedState!==null&&te(de,e);var t=ne.current,l=sp(t,e.type);t!==l&&(te(re,e),te(ne,l))}function Tn(e){re.current===e&&(Y(ne),Y(re)),de.current===e&&(Y(de),Tr._currentValue=Z)}var ua,En;function ra(e){if(ua===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);ua=t&&t[1]||"",En=-1B(z,W[Y]))}}},R=(T,j,N,B)=>{let J=(D,$)=>{if(u.asEquation($.conclusion)===void 0)return[];let W=r.genSchemaInsts($,N,T.fixes),H=r.instantiate($,W),C=H.premises,M=u.asEquation(H.conclusion);if(M===void 0)return[];let A=M[1],z=M[0];return["Forward","Backward"].flatMap(Y=>{let P=S(Y,z,A),re=P[1],x=P[0];return n.concrete(x)?yt(u.positions(j),V=>{let ee=V[2],te=V[0],ue=Jv(n.unify(n.upshift(x,ee.length,void 0),V[1],he(N)));if(ue===void 0)return;let ie=ve(ue),se=W.map(Yt=>n.reduce(n.substitute(Yt,ie))),ye=n.reduce(n.substitute(n.upshift(re,ee.length,void 0),ie)),Ae=u.replaceAt(j,te,ye),Il={vars:[],premises:[],conclusion:Ae},wa=C.map(Yt=>r.substitute(Yt,ie));return[{ruleName:D,direction:Y,path:te,values:se,newGoal:B(Il),subgoals:wa.map(B)},ie]}):[]})},k=D=>D==="Forward"?"→":"←",E=yt(c.facts(T),D=>{let $=D[0],Q=J($,D[1]),W=Q.length;if(W!==1)return W!==0?{TAG:"Delay",_0:{TAG:"Seq",_0:[{TAG:"RefRule",_0:$}]},_1:()=>Q.map(M=>{let A=M[0];return{TAG:"Action",_0:{TAG:"Seq",_0:[{TAG:"Text",_0:u.prettyPrintPath(A.path)},{TAG:"Text",_0:k(A.direction)}]},_1:A,_2:M[1]}})}:void 0;let H=Q[0],C=H[0];return{TAG:"Action",_0:{TAG:"Seq",_0:[{TAG:"RefRule",_0:$},{TAG:"Text",_0:k(C.direction)}]},_1:C,_2:H[1]}});return E.length>0?f.atGoal([{TAG:"Group",_0:{TAG:"Text",_0:"Rewriting"},_1:E}]):f.emptyAttached()},U=(T,j,N,B,J,k)=>{let E=J!==void 0?J:0,D=T.values.map($=>n.prettyPrint($,j,N));return(T.direction==="Backward"?"rev_rewrite":"rewrite").concat(" (").concat([Tn.prettyPrint(T.ruleName,B)].concat(D).join(" ")).concat(") ").concat(u.prettyPrintPath(T.path)).concat(" {").concat(T.subgoals.length>0?zt:"").concat(T.subgoals.map($=>k($,j,N,B,E+2|0)).join(zt)).concat("}").concat(zt).concat(k(T.newGoal,j,N,B,E)).concat(zt)},X=Dt("Rewrite.Make(Term)(Judgment).InternalParseError");return{Rule:r,Context:c,Results:f,keywords:o,subproofs:m,setSubproof:h,substitute:y,map:p,orient:S,check:v,apply:R,prettyPrint:U,InternalParseError:X,parse:(T,j,N,B,J,k,E)=>{let D=j==="rev_rewrite"?"Backward":"Forward",$=T.trim();if(!Me($[0],"("))return{TAG:"Error",_0:"Expected ("};let Q=Tn.parse($.slice(1).trim(),J);if(Q.TAG!=="Ok")return{TAG:"Error",_0:Q._0};let W=Q._0;$=W[1];let H=[],C={TAG:"Error",_0:""};for(;C=n.parse($,N,B,he(k)),En(C);){let z=Fl(C);H.push(z[0]),$=z[1].trim()}if(!Me($[0],")"))return{TAG:"Error",_0:") or term expected"};$=$.slice(1).trim();let M=u.parsePath($);$=M[1].trim();let A=[];if(!Me($[0],"{"))return{TAG:"Error",_0:"{ expected"};$=$.slice(1).trim();try{for(;Xc($[0],"}");){let Y=E($,N,B,J,k);if(Y.TAG==="Ok"){let P=Y._0;A.push(P[0]),$=P[1].trim()}else throw{RE_EXN_ID:X,_1:Y._0,Error:new Error}}if(!Me($[0],"}"))return{TAG:"Error",_0:"} or subgoal proof expected"};$=$.slice(1).trim();let z=E($,N,B,J,k);if(z.TAG==="Ok"){let Y=z._0;return $=Y[1].trim(),{TAG:"Ok",_0:[{ruleName:W[0],direction:D,path:M[0],values:H,newGoal:Y[0],subgoals:A},$]}}throw{RE_EXN_ID:X,_1:z._0,Error:new Error}}catch(z){let Y=la(z);if(Y.RE_EXN_ID===X)return{TAG:"Error",_0:Y._1};throw Y}},updateAtKey:(T,j,N)=>{let B=T.subgoals.slice();return B[j]=N(Ze(B[j],void 0)),{ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values,newGoal:T.newGoal,subgoals:B}},updateGoal:(T,j)=>({ruleName:T.ruleName,direction:T.direction,path:T.path,values:T.values,newGoal:j(T.newGoal),subgoals:T.subgoals})}}}function nx(n){return u=>{let r=Ru(n)(u),c=lx(n)(u),f=m=>{let h=m.method.direction,y;return y=h==="Forward"?"→":"←",b.jsxs("span",{children:[b.jsx(Tu.make,{assms:m.ctx.localFactNames,ruleRef:m.method.ruleName}),b.jsx("sup",{children:y})],className:"rule-rulename-rewrite"})};return{Context:r,Method:c,summary:f,make:m=>(h=>b.jsxs("div",{children:[b.jsx("span",{className:"typcn typcn-media-play"}),f(h),h.method.subgoals.length>0?b.jsx("ul",{children:h.method.subgoals.map((y,p)=>b.jsx("li",{children:xe.createElement(m,{proof:y,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(S,v)=>h.onChange(c.updateAtKey(h.method,p,R=>S),v)})},String(p))),className:"subgoals"}):"",b.jsx("div",{children:xe.createElement(m,{proof:h.method.newGoal,ctx:h.ctx,ruleStyle:h.ruleStyle,grammar:h.grammar,gen:h.gen,onChange:(y,p)=>h.onChange(c.updateGoal(h.method,S=>y),p)}),className:"proof-denest"})]}))}}}function J1(n){return b.jsxs(b.Fragment,{children:[b.jsx("span",{children:"disjoint",className:"rule-rulename-keyword"}),b.jsx("sup",{children:b.jsx(Tu.make,{assms:n.ctx.localFactNames,ruleRef:n.method.factName})})]})}function ax(n){return u=>b.jsxs("div",{children:[b.jsx("span",{className:"typcn typcn-media-play"}),J1(u)]})}let fy={summary:J1,make:ax};function F1(n){return b.jsxs(b.Fragment,{children:[b.jsx("span",{children:"injective",className:"rule-rulename-keyword"}),b.jsx("sup",{children:b.jsx(Tu.make,{assms:n.ctx.localFactNames,ruleRef:n.method.factName})})]})}function ux(n){return u=>b.jsxs("div",{children:[b.jsx("span",{className:"typcn typcn-media-play"}),F1(u),b.jsx("div",{children:xe.createElement(n,{proof:u.method.subgoal,ctx:u.ctx,ruleStyle:u.ruleStyle,grammar:u.grammar,gen:u.gen,onChange:(r,c)=>u.onChange(nl.setSubproof(u.method,void 0,r),c)}),className:"proof-denest"})]})}let oy={summary:F1,make:ux};function wm(n){return u=>(r=>({TermView:r,make:f=>r.make({term:f.judgment,grammar:f.grammar,scope:f.scope})}))}let rx=wm()({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(K1),W1=ft(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),my=Du(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(rx),dy=$u(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke});function zm(n,u){return n+"§"+u.toString()}function I1(n){return Ga(n,u=>"§"+u.toString())}function hy(n){let u=Rt(n.conclusion),r=u[0];if(r.TAG==="Symbol")return[r.name,u[1].length]}function py(n){return Object.values(qe(yt(Object.entries(n),u=>{let r=u[1],c=u[0];return tt(hy(r),f=>[c,r,f])}),{},(u,r)=>{let c=r[2],f=zm(c[0],c[1]);return u[f]=Dl([[[r[0],r[1]]],Ne(u[f],[])]),u})).map(u=>{let r=Ze(u[0],void 0),c=Ze(hy(r[1]),void 0);return{name:c[0],arity:c[1],rules:u}})}function ix(n,u){let r=n.arity,c=n.name,f=u.length,o=Kp(u,p=>p.name===c?p.arity===r:!1),m=(p,S)=>Kp(u,v=>v.name===p?v.arity===S:!1),y=u.flatMap(p=>p.rules).map(p=>{let S=p[1],v=S.vars.length,R=yt(S.premises,G=>{let T=Rt(G.conclusion),j=T[1],N=T[0];if(N.TAG!=="Symbol")return;let B=m(N.name,j.length);return{vars:G.vars,premises:G.premises,conclusion:_u({TAG:"Var",idx:((v+G.vars.length|0)+r|0)+B|0},j)}}),U=Rt(S.conclusion),X=U[1],_=U[0],O;if(_.TAG==="Symbol")O=m(_.name,X.length);else throw{RE_EXN_ID:Cr,_1:"Constructor conclusion must have a Symbol head",Error:new Error};return{vars:S.vars,premises:S.premises.concat(R),conclusion:_u({TAG:"Var",idx:(v+r|0)+O|0},X)}});return{vars:I1(r).concat(Ga(f,p=>"§P"+p.toString())),premises:Dl([[{vars:[],premises:[],conclusion:_u({TAG:"Symbol",name:c,constructor:!1},Ga(r,p=>({TAG:"Var",idx:p})))}],y]),conclusion:_u({TAG:"Var",idx:r+o|0},Ga(r,p=>({TAG:"Var",idx:p})))}}let cx=Na,sx={cmp:cx};function fx(n){let u=Rt(n.conclusion),r=u[0];if(r.TAG==="Symbol"&&!r.constructor)return[r.name,u[1].length]}function ox(n,u){return u[0]===n.name?u[1]===n.arity:!1}function mx(n){return n.rules.flatMap(u=>yt(u[1].premises,fx)).filter(u=>!ox(n,u))}function dx(n,u,r){for(;;){let c=u,f=n;if(f.length===0)return c;let o=Ze(f[0],void 0),m=o[1],h=o[0],y=f.slice(1),p=zm(h,m);if(Cc(c,p)){n=y;continue}let S=zc(c,p),v=Ne(tt(r.find(R=>R.name===h?R.arity===m:!1),mx),[]);u=S,n=y.concat(v)}}function hx(n,u){let r=dx([[n.name,n.arity]],Jl(sx),u);return u.filter(c=>Cc(r,zm(c.name,c.arity)))}function px(n){let u=n.arity,r=n.rules.map(c=>{let o=[c[0],c[1]][1],m=o.vars.length,y=Rt(o.conclusion)[1];if(y.length!==u)throw{RE_EXN_ID:"Assert_failure",_1:["HOInductiveSet.res",190,4],Error:new Error};let p=y.map((S,v)=>({vars:[],premises:[],conclusion:Rm({TAG:"Var",idx:m+v|0},S)}));return{vars:o.vars,premises:p.concat(o.premises),conclusion:{TAG:"Var",idx:m+u|0}}});return{vars:I1(u).concat(["§P"]),premises:Dl([[{vars:[],premises:[],conclusion:_u({TAG:"Symbol",name:n.name,constructor:!1},Ga(u,c=>({TAG:"Var",idx:c})))}],r]),conclusion:{TAG:"Var",idx:u}}}function P1(n){return Object.fromEntries(py(n).flatMap(u=>{let r=hx(u,py(n)),c=ix(u,r),f=px(u);return[["§induction-"+u.name,c],["§cases-"+u.name,f]]}))}function yx(n,u){return Object.entries(n.rules).map(r=>W1.prettyPrintTopLevel(r[1],r[0],u.grammar,void 0)).join(` +`)}function gx(n,u){let r=n,c=!0,f={},o={TAG:"Error",_0:"impossible"};for(;c;){let m=W1.parseTopLevel(r,u.grammar,void 0,[]);if(m.TAG==="Ok"){let h=m._0,y=h[1],p=h[0],S=p[1];S.trim()===""?(c=!1,o={TAG:"Error",_0:"Rule given with no name"}):(f[S]=p[0],y.trim()===""?(c=!1,o={TAG:"Ok",_0:f}):r=y)}else c=!1,o={TAG:"Error",_0:m._0}}return Ml(o,m=>[{rules:m},{facts:Object.assign(Object.assign({},m),P1(m)),ruleStyle:void 0,grammar:O1}])}function bx(n){return b.jsxs("div",{children:[Object.entries(n.content.rules).map((u,r)=>b.jsx(my.make,{rule:u[1],style:Ne(n.imports.ruleStyle,"Hybrid"),grammar:n.imports.grammar,scope:[],children:b.jsx("span",{children:u[0],className:"rule-rulename-global"})},String(r))),b.jsx("section",{children:b.jsxs("details",{children:[b.jsx("summary",{children:b.jsx("header",{children:b.jsx("h1",{children:"Derived Rules"})})}),Object.entries(P1(n.content.rules)).map((u,r)=>b.jsx(my.make,{rule:u[1],style:Ne(n.imports.ruleStyle,"Hybrid"),grammar:n.imports.grammar,scope:[],children:b.jsx("span",{children:u[0],className:"rule-rulename-global"})},String(r)))]}),className:"block"})],className:"axiom-set axiom-set-".concat(String(Ne(n.imports.ruleStyle,"Hybrid")))})}function vx(n,u){Object.values(n).forEach(r=>u(r))}function Ax(n){return u=>(r=>{let c=ft(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete}),f=Du(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete})(r),o=$u(u)({substitute:u.substitute,equivalent:u.equivalent,unify:u.unify,substDeBruijn:u.substDeBruijn,reduce:u.reduce,upshift:u.upshift,mapTerms:u.mapTerms,parse:u.parse,prettyPrint:u.prettyPrint,concrete:u.concrete}),m=O=>qe(O.premises,Oa(O.vars),(G,T)=>Ea(G,Oa(T.vars))),h=O=>{if(O.TAG!=="Compound")return;let G=O.subexps;if(G.length!==2)return;let T=G[0];if(T.TAG!=="Atom")return;let j=T._0,N=G[1];if(N.TAG!=="Atom")return;let B=N._0;if(j._0.RE_EXN_ID===_o.Tag&&B._0.RE_EXN_ID===Hr.Tag)return[j._1,B._1]},y=Dt("StringAxiomSet.Make(Atom)(Term)(JudgmentView).InvalidStringInductionPattern"),p=O=>Et.getOrElse(h(O),()=>{throw{RE_EXN_ID:y,Error:new Error}}),S=(O,G)=>({TAG:"Compound",subexps:[O,G]}),v=(O,G)=>{let T=G.map(N=>N.name),j=[O.name].concat(M_(Ho(Oa(O.rules.flatMap(N=>yt(N.premises,B=>Et.map(h(B.conclusion),J=>J[1])).filter(B=>Et.isSome(T.find(J=>J===B))))),O.name)));return $a(j.map(N=>G.find(B=>B.name===N)))},R=(O,G)=>{let T=qe(G.flatMap(z=>z.rules),void 0,(z,Y)=>Ea(z,m(Y))),j=z=>{for(;;){let Y=z;if(!ql(T,Y))return Y;z=Y+"'"}},N=G.map(z=>j("P"+z.name)),B=j("b"),J=j("x"),k=j("a"),E=N.concat([B,J,k]),D=E.findIndex(z=>z===J),$=E.findIndex(z=>z===k),Q=E.findIndex(z=>z===B),W=(z,Y,P)=>[{TAG:"Var",idx:Y}].concat(z).concat([{TAG:"Var",idx:P}]),H=z=>Dy(G,Y=>z===Y.name),C=(z,Y)=>{let P=Y+z.vars.length|0,re=p(z.conclusion),x=z.premises.filter(te=>Et.isSome(Et.flatMap(h(te.conclusion),ue=>H(ue[1])))).map(te=>C(te,P)),V=Et.getExn(H(re[1]),void 0),ee={TAG:"Atom",_0:_o.wrap(W(re[0],$+P|0,Q+P|0))};return{vars:z.vars,premises:z.premises.concat(x),conclusion:{TAG:"Compound",subexps:[ee,{TAG:"Var",idx:V+P|0}]}}},M={TAG:"Atom",_0:Hr.wrap(O.name)},A={TAG:"Atom",_0:_o.wrap(W([{TAG:"Var",idx:D}],$,Q))};return{vars:E,premises:[{vars:[],premises:[],conclusion:{TAG:"Compound",subexps:[{TAG:"Var",idx:D},M]}}].concat(G.flatMap(z=>z.rules.map(Y=>C(Y,0)))),conclusion:{TAG:"Compound",subexps:[A,{TAG:"Var",idx:0}]}}};return{Rule:c,RuleView:f,Ports:o,$$Set:void 0,varsInRule:m,destructureOpt:h,InvalidStringInductionPattern:y,destructure:p,structure:S,findMentionedRuleGroups:v,derive:R,deserialise:(O,G)=>{let T=j=>{let N=j,B=!0,J={},k={TAG:"Error",_0:"impossible"};for(;B;){let E=c.parseTopLevel(N,G.grammar,void 0,[]);if(E.TAG==="Ok"){let D=E._0,$=D[1],Q=D[0],W=Q[1];W.trim()===""?(B=!1,k={TAG:"Error",_0:"Rule given with no name"}):(J[W]=Q[0],$.trim()===""?(B=!1,k={TAG:"Ok",_0:J}):N=$)}else B=!1,k={TAG:"Error",_0:E._0}}return k};return Wy.map(T(O),j=>{let N={};vx(j,k=>{let E=h(k.conclusion);if(E===void 0)return;let D=E[1],$=N[D];$!==void 0?$.push(k):N[D]=[k]});let B=Object.entries(N).map(k=>({name:k[0],rules:k[1]})),J={};return B.forEach(k=>{J[k.name+"_induct"]=R(k,[k]);let E=v(k,B);if(E.length>1){J[k.name+"_mutualInduct"]=R(k,E);return}}),[{raw:j,derived:J},{facts:Object.assign(Object.assign({},j),J),ruleStyle:void 0,grammar:u.emptyGrammar}]})},serialise:(O,G)=>Object.entries(O.raw).map(T=>c.prettyPrintTopLevel(T[1],T[0],G.grammar,void 0)).join(` +`),make:O=>{let G=T=>b.jsx("div",{children:Object.entries(T).map((j,N)=>b.jsx(f.make,{rule:j[1],style:Et.getOr(O.imports.ruleStyle,"Hybrid"),grammar:O.imports.grammar,scope:[],children:j[0]},String(N))),className:"axiom-set axiom-set-".concat(String(Et.getOr(O.imports.ruleStyle,"Hybrid")))});return b.jsxs("div",{children:[G(O.content.raw),b.jsx("p",{children:"derived"}),G(O.content.derived)]})}}})}let yy=Jc(lT)(tT)(qS)(VS),gy=Jc(xn)(z1)(yy.Atom)(yy.AtomView),Zl=L1.Atom,by=Zl.Base,_x=L1.AtomView,vy=Jc({Base:{Tag:by.Tag,wrap:by.wrap},unify:Zl.unify,prettyPrint:Zl.prettyPrint,parse:Zl.parse,substitute:Zl.substitute,upshift:Zl.upshift,substDeBruijn:Zl.substDeBruijn,concrete:Zl.concrete,reduce:Zl.reduce,coerce:Zl.coerce})({make:_x.make})(gy.Atom)(gy.AtomView),Cm=Jc({Base:LT,unify:bn.unify,prettyPrint:bn.prettyPrint,parse:bn.parse,substitute:bn.substitute,upshift:bn.upshift,substDeBruijn:bn.substDeBruijn,concrete:bn.concrete,reduce:bn.reduce,coerce:bn.coerce})(eE)(vy.Atom)(vy.AtomView),km=wm()({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(K1),_c=qT(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km),Ay=_c.Ports,Sx=Mu({Ports:{combine:Ay.combine,empty:Ay.empty},serialise:_c.serialise,deserialise:_c.deserialise,make:_c.make}),Tx=Mu({Ports:{combine:dy.combine,empty:dy.empty},serialise:yx,deserialise:gx,make:bx}),Ex=Mu({Ports:{combine:cy.combine,empty:cy.empty},serialise:LE,deserialise:XE,make:YE}),Xo=nx(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke,asEquation:Kc,locate:E1,replaceAt:x1,positions:G1,prettyPrintPath:N1,parsePath:j1}),gl=Xo.Method,Yo=Ma(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:yl.Rule,Context:yl.Context,Results:yl.Results,keywords:yl.keywords,substitute:yl.substitute,check:yl.check,apply:yl.apply,map:yl.map,subproofs:yl.subproofs,setSubproof:yl.setSubproof,parse:yl.parse,prettyPrint:yl.prettyPrint},make:fy.make,summary:fy.summary})({Method:{Rule:nl.Rule,Context:nl.Context,Results:nl.Results,keywords:nl.keywords,substitute:nl.substitute,check:nl.check,apply:nl.apply,map:nl.map,subproofs:nl.subproofs,setSubproof:nl.setSubproof,parse:nl.parse,prettyPrint:nl.prettyPrint},make:oy.make,summary:oy.summary}),bl=Yo.Method,Qo=Ma(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:gl.Rule,Context:gl.Context,Results:gl.Results,keywords:gl.keywords,substitute:gl.substitute,check:gl.check,apply:gl.apply,map:gl.map,subproofs:gl.subproofs,setSubproof:gl.setSubproof,parse:gl.parse,prettyPrint:gl.prettyPrint},make:Xo.make,summary:Xo.summary})({Method:{Rule:bl.Rule,Context:bl.Context,Results:bl.Results,keywords:bl.keywords,substitute:bl.substitute,check:bl.check,apply:bl.apply,map:bl.map,subproofs:bl.subproofs,setSubproof:bl.setSubproof,parse:bl.parse,prettyPrint:bl.prettyPrint},make:Yo.make,summary:Yo.summary}),vl=Qo.Method,Zo=U1(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),Al=Zo.Method,Ko=H1(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km),_l=Ko.Method,Jo=Ma(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:Al.Rule,Context:Al.Context,Results:Al.Results,keywords:Al.keywords,substitute:Al.substitute,check:Al.check,apply:Al.apply,map:Al.map,subproofs:Al.subproofs,setSubproof:Al.setSubproof,parse:Al.parse,prettyPrint:Al.prettyPrint},make:Zo.make,summary:Zo.summary})({Method:{Rule:_l.Rule,Context:_l.Context,Results:_l.Results,keywords:_l.keywords,substitute:_l.substitute,check:_l.check,apply:_l.apply,map:_l.map,subproofs:_l.subproofs,setSubproof:_l.setSubproof,parse:_l.parse,prettyPrint:_l.prettyPrint},make:Ko.make,summary:Ko.summary}),Sl=Jo.Method,Fo=Ma(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:vl.Rule,Context:vl.Context,Results:vl.Results,keywords:vl.keywords,substitute:vl.substitute,check:vl.check,apply:vl.apply,map:vl.map,subproofs:vl.subproofs,setSubproof:vl.setSubproof,parse:vl.parse,prettyPrint:vl.prettyPrint},make:Qo.make,summary:Qo.summary})({Method:{Rule:Sl.Rule,Context:Sl.Context,Results:Sl.Results,keywords:Sl.keywords,substitute:Sl.substitute,check:Sl.check,apply:Sl.apply,map:Sl.map,subproofs:Sl.subproofs,setSubproof:Sl.setSubproof,parse:Sl.parse,prettyPrint:Sl.prettyPrint},make:Jo.make,summary:Jo.summary}),Tl=Fo.Method,Wo=q1(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),El=Wo.Method,Io=Ma(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})({Method:{Rule:Tl.Rule,Context:Tl.Context,Results:Tl.Results,keywords:Tl.keywords,substitute:Tl.substitute,check:Tl.check,apply:Tl.apply,map:Tl.map,subproofs:Tl.subproofs,setSubproof:Tl.setSubproof,parse:Tl.parse,prettyPrint:Tl.prettyPrint},make:Fo.make,summary:Fo.summary})({Method:{Rule:El.Rule,Context:El.Context,Results:El.Results,keywords:El.keywords,substitute:El.substitute,check:El.check,apply:El.apply,map:El.map,subproofs:El.subproofs,setSubproof:El.setSubproof,parse:El.parse,prettyPrint:El.prettyPrint},make:Wo.make,summary:Wo.summary}),xl=Io.Method,Sc=V1(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke})(km)({Method:{Rule:xl.Rule,Context:xl.Context,Results:xl.Results,keywords:xl.keywords,substitute:xl.substitute,check:xl.check,apply:xl.apply,map:xl.map,subproofs:xl.subproofs,setSubproof:xl.setSubproof,parse:xl.parse,prettyPrint:xl.prettyPrint},make:Io.make,summary:Io.summary}),_y=Sc.Ports,xx=Mu({Ports:{combine:_y.combine,empty:_y.empty},serialise:Sc.serialise,deserialise:Sc.deserialise,make:Sc.make}),Gx=tx(ot)({substitute:ze,equivalent:Qe,unify:Je,substDeBruijn:Xe,reduce:Le,upshift:we,mapTerms:Fe,parse:Ie,prettyPrint:We,concrete:Ke}),Yl=Cm.Atom,ce=p_({Base:Yl.Base,unify:Yl.unify,prettyPrint:Yl.prettyPrint,parse:Yl.parse,substitute:Yl.substitute,upshift:Yl.upshift,substDeBruijn:Yl.substDeBruijn,concrete:Yl.concrete,reduce:Yl.reduce,coerce:Yl.coerce}),Ql=Cm.Atom,Nx=nE({Base:Ql.Base,unify:Ql.unify,prettyPrint:Ql.prettyPrint,parse:Ql.parse,substitute:Ql.substitute,upshift:Ql.upshift,substDeBruijn:Ql.substDeBruijn,concrete:Ql.concrete,reduce:Ql.reduce,coerce:Ql.coerce})(Cm.AtomView)(ce),Bm=wm()({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete})(Nx),Tc=Ax()(ce)(Bm),Sy=Tc.Ports,jx=Mu({Ports:{combine:Sy.combine,empty:Sy.empty},serialise:Tc.serialise,deserialise:Tc.deserialise,make:Tc.make}),Po=U1(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete}),Gl=Po.Method,em=H1(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete})(Bm),Nl=em.Method,tm=Ma(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete})({Method:{Rule:Gl.Rule,Context:Gl.Context,Results:Gl.Results,keywords:Gl.keywords,substitute:Gl.substitute,check:Gl.check,apply:Gl.apply,map:Gl.map,subproofs:Gl.subproofs,setSubproof:Gl.setSubproof,parse:Gl.parse,prettyPrint:Gl.prettyPrint},make:Po.make,summary:Po.summary})({Method:{Rule:Nl.Rule,Context:Nl.Context,Results:Nl.Results,keywords:Nl.keywords,substitute:Nl.substitute,check:Nl.check,apply:Nl.apply,map:Nl.map,subproofs:Nl.subproofs,setSubproof:Nl.setSubproof,parse:Nl.parse,prettyPrint:Nl.prettyPrint},make:em.make,summary:em.summary}),jl=tm.Method,lm=q1(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete}),Ol=lm.Method,nm=Ma(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete})({Method:{Rule:jl.Rule,Context:jl.Context,Results:jl.Results,keywords:jl.keywords,substitute:jl.substitute,check:jl.check,apply:jl.apply,map:jl.map,subproofs:jl.subproofs,setSubproof:jl.setSubproof,parse:jl.parse,prettyPrint:jl.prettyPrint},make:tm.make,summary:tm.summary})({Method:{Rule:Ol.Rule,Context:Ol.Context,Results:Ol.Results,keywords:Ol.keywords,substitute:Ol.substitute,check:Ol.check,apply:Ol.apply,map:Ol.map,subproofs:Ol.subproofs,setSubproof:Ol.setSubproof,parse:Ol.parse,prettyPrint:Ol.prettyPrint},make:lm.make,summary:lm.summary}),Rl=nm.Method,Ec=V1(ce)({substitute:ce.substitute,equivalent:ce.equivalent,unify:ce.unify,substDeBruijn:ce.substDeBruijn,reduce:ce.reduce,upshift:ce.upshift,mapTerms:ce.mapTerms,parse:ce.parse,prettyPrint:ce.prettyPrint,concrete:ce.concrete})(Bm)({Method:{Rule:Rl.Rule,Context:Rl.Context,Results:Rl.Results,keywords:Rl.keywords,substitute:Rl.substitute,check:Rl.check,apply:Rl.apply,map:Rl.map,subproofs:Rl.subproofs,setSubproof:Rl.setSubproof,parse:Rl.parse,prettyPrint:Rl.prettyPrint},make:nm.make,summary:nm.summary}),Ty=Ec.Ports,Ox=Mu({Ports:{combine:Ty.combine,empty:Ty.empty},serialise:Ec.serialise,deserialise:Ec.deserialise,make:Ec.make});var Eo={exports:{}},jr={},xo={exports:{}},Go={};var Ey;function Rx(){return Ey||(Ey=1,(function(n){function u(A,z){var Y=A.length;A.push(z);e:for(;0>>1,re=A[P];if(0>>1;Pf(ee,Y))tef(ue,ee)?(A[P]=ue,A[te]=Y,P=te):(A[P]=ee,A[V]=Y,P=V);else if(tef(ue,Y))A[P]=ue,A[te]=Y,P=te;else break e}}return z}function f(A,z){var Y=A.sortIndex-z.sortIndex;return Y!==0?Y:A.id-z.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;n.unstable_now=function(){return o.now()}}else{var m=Date,h=m.now();n.unstable_now=function(){return m.now()-h}}var y=[],p=[],S=1,v=null,R=3,U=!1,X=!1,_=!1,O=!1,G=typeof setTimeout=="function"?setTimeout:null,T=typeof clearTimeout=="function"?clearTimeout:null,j=typeof setImmediate<"u"?setImmediate:null;function N(A){for(var z=r(p);z!==null;){if(z.callback===null)c(p);else if(z.startTime<=A)c(p),z.sortIndex=z.expirationTime,u(y,z);else break;z=r(p)}}function B(A){if(_=!1,N(A),!X)if(r(y)!==null)X=!0,J||(J=!0,W());else{var z=r(p);z!==null&&M(B,z.startTime-A)}}var J=!1,k=-1,E=5,D=-1;function $(){return O?!0:!(n.unstable_now()-DA&&$());){var P=v.callback;if(typeof P=="function"){v.callback=null,R=v.priorityLevel;var re=P(v.expirationTime<=A);if(A=n.unstable_now(),typeof re=="function"){v.callback=re,N(A),z=!0;break t}v===r(y)&&c(y),N(A)}else c(y);v=r(y)}if(v!==null)z=!0;else{var x=r(p);x!==null&&M(B,x.startTime-A),z=!1}}break e}finally{v=null,R=Y,U=!1}z=void 0}}finally{z?W():J=!1}}}var W;if(typeof j=="function")W=function(){j(Q)};else if(typeof MessageChannel<"u"){var H=new MessageChannel,C=H.port2;H.port1.onmessage=Q,W=function(){C.postMessage(null)}}else W=function(){G(Q,0)};function M(A,z){k=G(function(){A(n.unstable_now())},z)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(A){A.callback=null},n.unstable_forceFrameRate=function(A){0>A||125P?(A.sortIndex=Y,u(p,A),r(y)===null&&A===r(p)&&(_?(T(k),k=-1):_=!0,M(B,Y-P))):(A.sortIndex=re,u(y,A),X||U||(X=!0,J||(J=!0,W()))),A},n.unstable_shouldYield=$,n.unstable_wrapCallback=function(A){var z=R;return function(){var Y=R;R=z;try{return A.apply(this,arguments)}finally{R=Y}}}})(Go)),Go}var xy;function Dx(){return xy||(xy=1,xo.exports=Rx()),xo.exports}var Gy;function $x(){if(Gy)return jr;Gy=1;var n=Dx(),u=Dm(),r=B1();function c(e){var t="https://react.dev/errors/"+e;if(1re||(e.current=P[re],P[re]=null,re--)}function ee(e,t){re++,P[re]=e.current,e.current=t}var te=x(null),ue=x(null),ie=x(null),se=x(null);function ye(e,t){switch(ee(ie,t),ee(ue,e),ee(te,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?cp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=cp(t),e=sp(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}V(te),ee(te,e)}function Ae(){V(te),V(ue),V(ie)}function lt(e){e.memoizedState!==null&&ee(se,e);var t=te.current,l=sp(t,e.type);t!==l&&(ee(ue,e),ee(te,l))}function $t(e){ue.current===e&&(V(te),V(ue)),se.current===e&&(V(se),Tr._currentValue=Y)}var Il,wa;function Yt(e){if(Il===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);Il=t&&t[1]||"",wa=-1)":-1i||M[a]!==J[i]){var P=` -`+M[a].replace(" at new "," at ");return e.displayName&&P.includes("")&&(P=P.replace("",e.displayName)),P}while(1<=a&&0<=i);break}}}finally{Wc=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?ra(l):""}function eg(e,t){switch(e.tag){case 26:case 27:case 5:return ra(e.type);case 16:return ra("Lazy");case 13:return e.child!==t&&t!==null?ra("Suspense Fallback"):ra("Suspense");case 19:return ra("SuspenseList");case 0:case 15:return Ic(e.type,!1);case 11:return Ic(e.type.render,!1);case 1:return Ic(e.type,!0);case 31:return ra("Activity");default:return""}}function Um(e){try{var t="",l=null;do t+=eg(e,l),l=e,e=e.return;while(e);return t}catch(a){return` +`+Il+e+wa}var Fc=!1;function Wc(e,t){if(!e||Fc)return"";Fc=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var ae=function(){throw Error()};if(Object.defineProperty(ae.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ae,[])}catch(I){var F=I}Reflect.construct(e,[],ae)}else{try{ae.call()}catch(I){F=I}e.call(ae.prototype)}}else{try{throw Error()}catch(I){F=I}(ae=e())&&typeof ae.catch=="function"&&ae.catch(function(){})}}catch(I){if(I&&F&&typeof I.stack=="string")return[I.stack,F.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var i=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");i&&i.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var s=a.DetermineComponentFrameRoot(),d=s[0],g=s[1];if(d&&g){var w=d.split(` +`),K=g.split(` +`);for(i=a=0;ai||w[a]!==K[i]){var le=` +`+w[a].replace(" at new "," at ");return e.displayName&&le.includes("")&&(le=le.replace("",e.displayName)),le}while(1<=a&&0<=i);break}}}finally{Fc=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?Yt(l):""}function eg(e,t){switch(e.tag){case 26:case 27:case 5:return Yt(e.type);case 16:return Yt("Lazy");case 13:return e.child!==t&&t!==null?Yt("Suspense Fallback"):Yt("Suspense");case 19:return Yt("SuspenseList");case 0:case 15:return Wc(e.type,!1);case 11:return Wc(e.type.render,!1);case 1:return Wc(e.type,!0);case 31:return Yt("Activity");default:return""}}function Um(e){try{var t="",l=null;do t+=eg(e,l),l=e,e=e.return;while(e);return t}catch(a){return` Error generating stack: `+a.message+` -`+a.stack}}var Pc=Object.prototype.hasOwnProperty,es=n.unstable_scheduleCallback,ts=n.unstable_cancelCallback,tg=n.unstable_shouldYield,lg=n.unstable_requestPaint,Xt=n.unstable_now,ng=n.unstable_getCurrentPriorityLevel,Hm=n.unstable_ImmediatePriority,qm=n.unstable_UserBlockingPriority,Zr=n.unstable_NormalPriority,ag=n.unstable_LowPriority,Vm=n.unstable_IdlePriority,ug=n.log,rg=n.unstable_setDisableYieldValue,zu=null,Lt=null;function xn(e){if(typeof ug=="function"&&rg(e),Lt&&typeof Lt.setStrictMode=="function")try{Lt.setStrictMode(zu,e)}catch{}}var Yt=Math.clz32?Math.clz32:sg,ig=Math.log,cg=Math.LN2;function sg(e){return e>>>=0,e===0?32:31-(ig(e)/cg|0)|0}var Kr=256,Jr=262144,Fr=4194304;function ia(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Wr(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var i=0,s=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var g=a&134217727;return g!==0?(a=g&~s,a!==0?i=ia(a):(d&=g,d!==0?i=ia(d):l||(l=g&~e,l!==0&&(i=ia(l))))):(g=a&~s,g!==0?i=ia(g):d!==0?i=ia(d):l||(l=a&~e,l!==0&&(i=ia(l)))),i===0?0:t!==0&&t!==i&&(t&s)===0&&(s=i&-i,l=t&-t,s>=l||s===32&&(l&4194048)!==0)?t:i}function Cu(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function fg(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Xm(){var e=Fr;return Fr<<=1,(Fr&62914560)===0&&(Fr=4194304),e}function ls(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function ku(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function og(e,t,l,a,i,s){var d=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var g=e.entanglements,M=e.expirationTimes,J=e.hiddenUpdates;for(l=d&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var gg=/[\n"\\]/g;function al(e){return e.replace(gg,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function cs(e,t,l,a,i,s,d,g){e.name="",d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"?e.type=d:e.removeAttribute("type"),t!=null?d==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+nl(t)):e.value!==""+nl(t)&&(e.value=""+nl(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?ss(e,d,nl(t)):l!=null?ss(e,d,nl(l)):a!=null&&e.removeAttribute("value"),i==null&&s!=null&&(e.defaultChecked=!!s),i!=null&&(e.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+nl(g):e.removeAttribute("name")}function ld(e,t,l,a,i,s,d,g){if(s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(e.type=s),t!=null||l!=null){if(!(s!=="submit"&&s!=="reset"||t!=null)){is(e);return}l=l!=null?""+nl(l):"",t=t!=null?""+nl(t):l,g||t===e.value||(e.value=t),e.defaultValue=t}a=a??i,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=g?e.checked:!!a,e.defaultChecked=!!a,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),is(e)}function ss(e,t,l){t==="number"&&ei(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function Ha(e,t,l,a){if(e=e.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),hs=!1;if(Il)try{var qu={};Object.defineProperty(qu,"passive",{get:function(){hs=!0}}),window.addEventListener("test",qu,qu),window.removeEventListener("test",qu,qu)}catch{hs=!1}var Nn=null,ps=null,li=null;function sd(){if(li)return li;var e,t=ps,l=t.length,a,i="value"in Nn?Nn.value:Nn.textContent,s=i.length;for(e=0;e=Lu),pd=" ",yd=!1;function gd(e,t){switch(e){case"keyup":return Yg.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var La=!1;function Zg(e,t){switch(e){case"compositionend":return bd(t);case"keypress":return t.which!==32?null:(yd=!0,pd);case"textInput":return e=t.data,e===pd&&yd?null:e;default:return null}}function Kg(e,t){if(La)return e==="compositionend"||!As&&gd(e,t)?(e=sd(),li=ps=Nn=null,La=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Gd(l)}}function jd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?jd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Od(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ei(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=ei(e.document)}return t}function Ts(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var lb=Il&&"documentMode"in document&&11>=document.documentMode,Ya=null,Es=null,Ku=null,xs=!1;function Rd(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;xs||Ya==null||Ya!==ei(a)||(a=Ya,"selectionStart"in a&&Ts(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ku&&Zu(Ku,a)||(Ku=a,a=Ji(Es,"onSelect"),0>=d,i-=d,Bl=1<<32-Yt(t)+i|l<ge?(Se=se,se=null):Se=se.sibling;var Ge=W(X,se,K[ge],ee);if(Ge===null){se===null&&(se=Se);break}e&&se&&Ge.alternate===null&&t(X,se),U=s(Ge,U,ge),xe===null?oe=Ge:xe.sibling=Ge,xe=Ge,se=Se}if(ge===K.length)return l(X,se),Te&&en(X,ge),oe;if(se===null){for(;gege?(Se=se,se=null):Se=se.sibling;var Jn=W(X,se,Ge.value,ee);if(Jn===null){se===null&&(se=Se);break}e&&se&&Jn.alternate===null&&t(X,se),U=s(Jn,U,ge),xe===null?oe=Jn:xe.sibling=Jn,xe=Jn,se=Se}if(Ge.done)return l(X,se),Te&&en(X,ge),oe;if(se===null){for(;!Ge.done;ge++,Ge=K.next())Ge=le(X,Ge.value,ee),Ge!==null&&(U=s(Ge,U,ge),xe===null?oe=Ge:xe.sibling=Ge,xe=Ge);return Te&&en(X,ge),oe}for(se=a(se);!Ge.done;ge++,Ge=K.next())Ge=I(se,X,ge,Ge.value,ee),Ge!==null&&(e&&Ge.alternate!==null&&se.delete(Ge.key===null?ge:Ge.key),U=s(Ge,U,ge),xe===null?oe=Ge:xe.sibling=Ge,xe=Ge);return e&&se.forEach(function(Sv){return t(X,Sv)}),Te&&en(X,ge),oe}function Ce(X,U,K,ee){if(typeof K=="object"&&K!==null&&K.type===_&&K.key===null&&(K=K.props.children),typeof K=="object"&&K!==null){switch(K.$$typeof){case k:e:{for(var oe=K.key;U!==null;){if(U.key===oe){if(oe=K.type,oe===_){if(U.tag===7){l(X,U.sibling),ee=i(U,K.props.children),ee.return=X,X=ee;break e}}else if(U.elementType===oe||typeof oe=="object"&&oe!==null&&oe.$$typeof===E&&ba(oe)===U.type){l(X,U.sibling),ee=i(U,K.props),er(ee,K),ee.return=X,X=ee;break e}l(X,U);break}else t(X,U);U=U.sibling}K.type===_?(ee=da(K.props.children,X.mode,ee,K.key),ee.return=X,X=ee):(ee=mi(K.type,K.key,K.props,null,X.mode,ee),er(ee,K),ee.return=X,X=ee)}return d(X);case Q:e:{for(oe=K.key;U!==null;){if(U.key===oe)if(U.tag===4&&U.stateNode.containerInfo===K.containerInfo&&U.stateNode.implementation===K.implementation){l(X,U.sibling),ee=i(U,K.children||[]),ee.return=X,X=ee;break e}else{l(X,U);break}else t(X,U);U=U.sibling}ee=$s(K,X.mode,ee),ee.return=X,X=ee}return d(X);case E:return K=ba(K),Ce(X,U,K,ee)}if(q(K))return ce(X,U,K,ee);if(L(K)){if(oe=L(K),typeof oe!="function")throw Error(c(150));return K=oe.call(K),me(X,U,K,ee)}if(typeof K.then=="function")return Ce(X,U,vi(K),ee);if(K.$$typeof===R)return Ce(X,U,pi(X,K),ee);Ai(X,K)}return typeof K=="string"&&K!==""||typeof K=="number"||typeof K=="bigint"?(K=""+K,U!==null&&U.tag===6?(l(X,U.sibling),ee=i(U,K),ee.return=X,X=ee):(l(X,U),ee=Ds(K,X.mode,ee),ee.return=X,X=ee),d(X)):l(X,U)}return function(X,U,K,ee){try{Pu=0;var oe=Ce(X,U,K,ee);return lu=null,oe}catch(se){if(se===tu||se===gi)throw se;var xe=Zt(29,se,null,X.mode);return xe.lanes=ee,xe.return=X,xe}}}var Aa=Pd(!0),eh=Pd(!1),$n=!1;function Ls(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ys(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Mn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function wn(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Ne&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=oi(e),kd(e,null,l),t}return fi(e,a,t,l),oi(e)}function tr(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Ym(e,l)}}function Qs(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var i=null,s=null;if(l=l.firstBaseUpdate,l!==null){do{var d={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};s===null?i=s=d:s=s.next=d,l=l.next}while(l!==null);s===null?i=s=t:s=s.next=t}else i=s=t;l={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var Zs=!1;function lr(){if(Zs){var e=eu;if(e!==null)throw e}}function nr(e,t,l,a){Zs=!1;var i=e.updateQueue;$n=!1;var s=i.firstBaseUpdate,d=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var M=g,J=M.next;M.next=null,d===null?s=J:d.next=J,d=M;var P=e.alternate;P!==null&&(P=P.updateQueue,g=P.lastBaseUpdate,g!==d&&(g===null?P.firstBaseUpdate=J:g.next=J,P.lastBaseUpdate=M))}if(s!==null){var le=i.baseState;d=0,P=J=M=null,g=s;do{var W=g.lane&-536870913,I=W!==g.lane;if(I?(_e&W)===W:(a&W)===W){W!==0&&W===Pa&&(Zs=!0),P!==null&&(P=P.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var ce=e,me=g;W=t;var Ce=l;switch(me.tag){case 1:if(ce=me.payload,typeof ce=="function"){le=ce.call(Ce,le,W);break e}le=ce;break e;case 3:ce.flags=ce.flags&-65537|128;case 0:if(ce=me.payload,W=typeof ce=="function"?ce.call(Ce,le,W):ce,W==null)break e;le=A({},le,W);break e;case 2:$n=!0}}W=g.callback,W!==null&&(e.flags|=64,I&&(e.flags|=8192),I=i.callbacks,I===null?i.callbacks=[W]:I.push(W))}else I={lane:W,tag:g.tag,payload:g.payload,callback:g.callback,next:null},P===null?(J=P=I,M=le):P=P.next=I,d|=W;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;I=g,g=I.next,I.next=null,i.lastBaseUpdate=I,i.shared.pending=null}}while(!0);P===null&&(M=le),i.baseState=M,i.firstBaseUpdate=J,i.lastBaseUpdate=P,s===null&&(i.shared.lanes=0),Un|=d,e.lanes=d,e.memoizedState=le}}function th(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function lh(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;es?s:8;var d=x.T,g={};x.T=g,df(e,!1,t,l);try{var M=i(),J=x.S;if(J!==null&&J(g,M),M!==null&&typeof M=="object"&&typeof M.then=="function"){var P=ob(M,a);rr(e,t,P,It(e))}else rr(e,t,a,It(e))}catch(le){rr(e,t,{then:function(){},status:"rejected",reason:le},It())}finally{z.p=s,d!==null&&g.types!==null&&(d.types=g.types),x.T=d}}function gb(){}function of(e,t,l,a){if(e.tag!==5)throw Error(c(476));var i=wh(e).queue;Mh(e,i,t,Z,l===null?gb:function(){return zh(e),l(a)})}function wh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Z,baseState:Z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:an,lastRenderedState:Z},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:an,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function zh(e){var t=wh(e);t.next===null&&(t=e.alternate.memoizedState),rr(e,t.next.queue,{},It())}function mf(){return bt(Tr)}function Ch(){return nt().memoizedState}function kh(){return nt().memoizedState}function bb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=It();e=Mn(l);var a=wn(t,e,l);a!==null&&(Ht(a,t,l),tr(a,t,l)),t={cache:Hs()},e.payload=t;return}t=t.return}}function vb(e,t,l){var a=It();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Ri(e)?Uh(t,l):(l=Os(e,t,l,a),l!==null&&(Ht(l,e,a),Hh(l,t,a)))}function Bh(e,t,l){var a=It();rr(e,t,l,a)}function rr(e,t,l,a){var i={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(Ri(e))Uh(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var d=t.lastRenderedState,g=s(d,l);if(i.hasEagerState=!0,i.eagerState=g,Qt(g,d))return fi(e,t,i,0),Be===null&&si(),!1}catch{}if(l=Os(e,t,i,a),l!==null)return Ht(l,e,a),Hh(l,t,a),!0}return!1}function df(e,t,l,a){if(a={lane:2,revertLane:Yf(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Ri(e)){if(t)throw Error(c(479))}else t=Os(e,l,a,2),t!==null&&Ht(t,e,2)}function Ri(e){var t=e.alternate;return e===ye||t!==null&&t===ye}function Uh(e,t){au=Ti=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function Hh(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Ym(e,l)}}var ir={readContext:bt,use:Gi,useCallback:Pe,useContext:Pe,useEffect:Pe,useImperativeHandle:Pe,useLayoutEffect:Pe,useInsertionEffect:Pe,useMemo:Pe,useReducer:Pe,useRef:Pe,useState:Pe,useDebugValue:Pe,useDeferredValue:Pe,useTransition:Pe,useSyncExternalStore:Pe,useId:Pe,useHostTransitionStatus:Pe,useFormState:Pe,useActionState:Pe,useOptimistic:Pe,useMemoCache:Pe,useCacheRefresh:Pe};ir.useEffectEvent=Pe;var qh={readContext:bt,use:Gi,useCallback:function(e,t){return Dt().memoizedState=[e,t===void 0?null:t],e},useContext:bt,useEffect:Eh,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,ji(4194308,4,jh.bind(null,t,e),l)},useLayoutEffect:function(e,t){return ji(4194308,4,e,t)},useInsertionEffect:function(e,t){ji(4,2,e,t)},useMemo:function(e,t){var l=Dt();t=t===void 0?null:t;var a=e();if(_a){xn(!0);try{e()}finally{xn(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=Dt();if(l!==void 0){var i=l(t);if(_a){xn(!0);try{l(t)}finally{xn(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=vb.bind(null,ye,e),[a.memoizedState,e]},useRef:function(e){var t=Dt();return e={current:e},t.memoizedState=e},useState:function(e){e=uf(e);var t=e.queue,l=Bh.bind(null,ye,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:sf,useDeferredValue:function(e,t){var l=Dt();return ff(l,e,t)},useTransition:function(){var e=uf(!1);return e=Mh.bind(null,ye,e.queue,!0,!1),Dt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=ye,i=Dt();if(Te){if(l===void 0)throw Error(c(407));l=l()}else{if(l=t(),Be===null)throw Error(c(349));(_e&127)!==0||ch(a,t,l)}i.memoizedState=l;var s={value:l,getSnapshot:t};return i.queue=s,Eh(fh.bind(null,a,s,e),[e]),a.flags|=2048,ru(9,{destroy:void 0},sh.bind(null,a,s,l,t),null),l},useId:function(){var e=Dt(),t=Be.identifierPrefix;if(Te){var l=Ul,a=Bl;l=(a&~(1<<32-Yt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=Ei++,0<\/script>",s=s.removeChild(s.firstChild);break;case"select":s=typeof a.is=="string"?d.createElement("select",{is:a.is}):d.createElement("select"),a.multiple?s.multiple=!0:a.size&&(s.size=a.size);break;default:s=typeof a.is=="string"?d.createElement(i,{is:a.is}):d.createElement(i)}}s[yt]=t,s[wt]=a;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)s.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=s;e:switch(At(s,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&rn(t)}}return qe(t),Nf(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&rn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(c(166));if(e=fe.current,Wa(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,i=gt,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[yt]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||rp(e.nodeValue,l)),e||Rn(t,!0)}else e=Fi(e).createTextNode(a),e[yt]=t,t.stateNode=e}return qe(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=Wa(t),l!==null){if(e===null){if(!a)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[yt]=t}else ha(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;qe(t),e=!1}else l=Cs(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Jt(t),t):(Jt(t),null);if((t.flags&128)!==0)throw Error(c(558))}return qe(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Wa(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(c(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(c(317));i[yt]=t}else ha(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;qe(t),i=!1}else i=Cs(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Jt(t),t):(Jt(t),null)}return Jt(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),s=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(s=a.memoizedState.cachePool.pool),s!==i&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),zi(t,t.updateQueue),qe(t),null);case 4:return Le(),e===null&&Jf(t.stateNode.containerInfo),qe(t),null;case 10:return ln(t.type),qe(t),null;case 19:if(Y(lt),a=t.memoizedState,a===null)return qe(t),null;if(i=(t.flags&128)!==0,s=a.rendering,s===null)if(i)sr(a,!1);else{if(et!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(s=Si(e),s!==null){for(t.flags|=128,sr(a,!1),e=s.updateQueue,t.updateQueue=e,zi(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)Bd(l,e),l=l.sibling;return te(lt,lt.current&1|2),Te&&en(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Xt()>Hi&&(t.flags|=128,i=!0,sr(a,!1),t.lanes=4194304)}else{if(!i)if(e=Si(s),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,zi(t,e),sr(a,!0),a.tail===null&&a.tailMode==="hidden"&&!s.alternate&&!Te)return qe(t),null}else 2*Xt()-a.renderingStartTime>Hi&&l!==536870912&&(t.flags|=128,i=!0,sr(a,!1),t.lanes=4194304);a.isBackwards?(s.sibling=t.child,t.child=s):(e=a.last,e!==null?e.sibling=s:t.child=s,a.last=s)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Xt(),e.sibling=null,l=lt.current,te(lt,i?l&1|2:l&1),Te&&en(t,a.treeForkCount),e):(qe(t),null);case 22:case 23:return Jt(t),Js(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(qe(t),t.subtreeFlags&6&&(t.flags|=8192)):qe(t),l=t.updateQueue,l!==null&&zi(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&Y(ga),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),ln(at),qe(t),null;case 25:return null;case 30:return null}throw Error(c(156,t.tag))}function Eb(e,t){switch(ws(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ln(at),Le(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Tn(t),null;case 31:if(t.memoizedState!==null){if(Jt(t),t.alternate===null)throw Error(c(340));ha()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Jt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));ha()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Y(lt),null;case 4:return Le(),null;case 10:return ln(t.type),null;case 22:case 23:return Jt(t),Js(),e!==null&&Y(ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ln(at),null;case 25:return null;default:return null}}function o0(e,t){switch(ws(t),t.tag){case 3:ln(at),Le();break;case 26:case 27:case 5:Tn(t);break;case 4:Le();break;case 31:t.memoizedState!==null&&Jt(t);break;case 13:Jt(t);break;case 19:Y(lt);break;case 10:ln(t.type);break;case 22:case 23:Jt(t),Js(),e!==null&&Y(ga);break;case 24:ln(at)}}function fr(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var i=a.next;l=i;do{if((l.tag&e)===e){a=void 0;var s=l.create,d=l.inst;a=s(),d.destroy=a}l=l.next}while(l!==i)}}catch(g){Oe(t,t.return,g)}}function kn(e,t,l){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var s=i.next;a=s;do{if((a.tag&e)===e){var d=a.inst,g=d.destroy;if(g!==void 0){d.destroy=void 0,i=t;var M=l,J=g;try{J()}catch(P){Oe(i,M,P)}}}a=a.next}while(a!==s)}}catch(P){Oe(t,t.return,P)}}function m0(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{lh(t,l)}catch(a){Oe(e,e.return,a)}}}function d0(e,t,l){l.props=Sa(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){Oe(e,t,a)}}function or(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(i){Oe(e,t,i)}}function Hl(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(i){Oe(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(i){Oe(e,t,i)}else l.current=null}function h0(e){var t=e.type,l=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break e;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(i){Oe(e,e.return,i)}}function jf(e,t,l){try{var a=e.stateNode;Qb(a,e.type,l,t),a[wt]=t}catch(i){Oe(e,e.return,i)}}function p0(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Ln(e.type)||e.tag===4}function Of(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||p0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Ln(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Rf(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=Wl));else if(a!==4&&(a===27&&Ln(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(Rf(e,t,l),e=e.sibling;e!==null;)Rf(e,t,l),e=e.sibling}function Ci(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(a!==4&&(a===27&&Ln(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Ci(e,t,l),e=e.sibling;e!==null;)Ci(e,t,l),e=e.sibling}function y0(e){var t=e.stateNode,l=e.memoizedProps;try{for(var a=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);At(t,a,l),t[yt]=e,t[wt]=l}catch(s){Oe(e,e.return,s)}}var cn=!1,it=!1,Df=!1,g0=typeof WeakSet=="function"?WeakSet:Set,ht=null;function xb(e,t){if(e=e.containerInfo,If=nc,e=Od(e),Ts(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var i=a.anchorOffset,s=a.focusNode;a=a.focusOffset;try{l.nodeType,s.nodeType}catch{l=null;break e}var d=0,g=-1,M=-1,J=0,P=0,le=e,W=null;t:for(;;){for(var I;le!==l||i!==0&&le.nodeType!==3||(g=d+i),le!==s||a!==0&&le.nodeType!==3||(M=d+a),le.nodeType===3&&(d+=le.nodeValue.length),(I=le.firstChild)!==null;)W=le,le=I;for(;;){if(le===e)break t;if(W===l&&++J===i&&(g=d),W===s&&++P===a&&(M=d),(I=le.nextSibling)!==null)break;le=W,W=le.parentNode}le=I}l=g===-1||M===-1?null:{start:g,end:M}}else l=null}l=l||{start:0,end:0}}else l=null;for(Pf={focusedElem:e,selectionRange:l},nc=!1,ht=t;ht!==null;)if(t=ht,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ht=e;else for(;ht!==null;){switch(t=ht,s=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),At(s,a,l),s[yt]=e,dt(s),a=s;break e;case"link":var d=Tp("link","href",i).get(a+(l.href||""));if(d){for(var g=0;gCe&&(d=Ce,Ce=me,me=d);var X=Nd(g,me),U=Nd(g,Ce);if(X&&U&&(I.rangeCount!==1||I.anchorNode!==X.node||I.anchorOffset!==X.offset||I.focusNode!==U.node||I.focusOffset!==U.offset)){var K=le.createRange();K.setStart(X.node,X.offset),I.removeAllRanges(),me>Ce?(I.addRange(K),I.extend(U.node,U.offset)):(K.setEnd(U.node,U.offset),I.addRange(K))}}}}for(le=[],I=g;I=I.parentNode;)I.nodeType===1&&le.push({element:I,left:I.scrollLeft,top:I.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;gl?32:l,x.T=null,l=Bf,Bf=null;var s=qn,d=dn;if(ot=0,ou=qn=null,dn=0,(Ne&6)!==0)throw Error(c(331));var g=Ne;if(Ne|=4,j0(s.current),x0(s,s.current,d,l),Ne=g,gr(0,!1),Lt&&typeof Lt.onPostCommitFiberRoot=="function")try{Lt.onPostCommitFiberRoot(zu,s)}catch{}return!0}finally{z.p=i,x.T=a,Q0(e,t)}}function K0(e,t,l){t=rl(l,t),t=gf(e.stateNode,t,2),e=wn(e,t,2),e!==null&&(ku(e,2),ql(e))}function Oe(e,t,l){if(e.tag===3)K0(e,e,l);else for(;t!==null;){if(t.tag===3){K0(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Hn===null||!Hn.has(a))){e=rl(l,e),l=Jh(2),a=wn(t,l,2),a!==null&&(Fh(l,a,t,e),ku(a,2),ql(a));break}}t=t.return}}function Vf(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new jb;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(l)||(wf=!0,i.add(l),e=Mb.bind(null,e,t,l),t.then(e,e))}function Mb(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Be===e&&(_e&l)===l&&(et===4||et===3&&(_e&62914560)===_e&&300>Xt()-Ui?(Ne&2)===0&&mu(e,0):zf|=l,fu===_e&&(fu=0)),ql(e)}function J0(e,t){t===0&&(t=Xm()),e=ma(e,t),e!==null&&(ku(e,t),ql(e))}function wb(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),J0(e,l)}function zb(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(l=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(c(314))}a!==null&&a.delete(t),J0(e,l)}function Cb(e,t){return es(e,t)}var Qi=null,hu=null,Xf=!1,Zi=!1,Lf=!1,Xn=0;function ql(e){e!==hu&&e.next===null&&(hu===null?Qi=hu=e:hu=hu.next=e),Zi=!0,Xf||(Xf=!0,Bb())}function gr(e,t){if(!Lf&&Zi){Lf=!0;do for(var l=!1,a=Qi;a!==null;){if(e!==0){var i=a.pendingLanes;if(i===0)var s=0;else{var d=a.suspendedLanes,g=a.pingedLanes;s=(1<<31-Yt(42|e)+1)-1,s&=i&~(d&~g),s=s&201326741?s&201326741|1:s?s|2:0}s!==0&&(l=!0,P0(a,s))}else s=_e,s=Wr(a,a===Be?s:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(s&3)===0||Cu(a,s)||(l=!0,P0(a,s));a=a.next}while(l);Lf=!1}}function kb(){F0()}function F0(){Zi=Xf=!1;var e=0;Xn!==0&&Kb()&&(e=Xn);for(var t=Xt(),l=null,a=Qi;a!==null;){var i=a.next,s=W0(a,t);s===0?(a.next=null,l===null?Qi=i:l.next=i,i===null&&(hu=l)):(l=a,(e!==0||(s&3)!==0)&&(Zi=!0)),a=i}ot!==0&&ot!==5||gr(e),Xn!==0&&(Xn=0)}function W0(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,s=e.pendingLanes&-62914561;0g)break;var P=M.transferSize,le=M.initiatorType;P&&ip(le)&&(M=M.responseEnd,d+=P*(M"u"?null:document;function vp(e,t,l){var a=pu;if(a&&typeof t=="string"&&t){var i=al(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof l=="string"&&(i+='[crossorigin="'+l+'"]'),bp.has(i)||(bp.add(i),e={rel:e,crossOrigin:l,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),At(t,"link",e),dt(t),a.head.appendChild(t)))}}function nv(e){hn.D(e),vp("dns-prefetch",e,null)}function av(e,t){hn.C(e,t),vp("preconnect",e,t)}function uv(e,t,l){hn.L(e,t,l);var a=pu;if(a&&e&&t){var i='link[rel="preload"][as="'+al(t)+'"]';t==="image"&&l&&l.imageSrcSet?(i+='[imagesrcset="'+al(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(i+='[imagesizes="'+al(l.imageSizes)+'"]')):i+='[href="'+al(e)+'"]';var s=i;switch(t){case"style":s=yu(e);break;case"script":s=gu(e)}ml.has(s)||(e=A({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),ml.set(s,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(_r(s))||t==="script"&&a.querySelector(Sr(s))||(t=a.createElement("link"),At(t,"link",e),dt(t),a.head.appendChild(t)))}}function rv(e,t){hn.m(e,t);var l=pu;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+al(a)+'"][href="'+al(e)+'"]',s=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":s=gu(e)}if(!ml.has(s)&&(e=A({rel:"modulepreload",href:e},t),ml.set(s,e),l.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Sr(s)))return}a=l.createElement("link"),At(a,"link",e),dt(a),l.head.appendChild(a)}}}function iv(e,t,l){hn.S(e,t,l);var a=pu;if(a&&e){var i=Ba(a).hoistableStyles,s=yu(e);t=t||"default";var d=i.get(s);if(!d){var g={loading:0,preload:null};if(d=a.querySelector(_r(s)))g.loading=5;else{e=A({rel:"stylesheet",href:e,"data-precedence":t},l),(l=ml.get(s))&&ro(e,l);var M=d=a.createElement("link");dt(M),At(M,"link",e),M._p=new Promise(function(J,P){M.onload=J,M.onerror=P}),M.addEventListener("load",function(){g.loading|=1}),M.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Ii(d,t,a)}d={type:"stylesheet",instance:d,count:1,state:g},i.set(s,d)}}}function cv(e,t){hn.X(e,t);var l=pu;if(l&&e){var a=Ba(l).hoistableScripts,i=gu(e),s=a.get(i);s||(s=l.querySelector(Sr(i)),s||(e=A({src:e,async:!0},t),(t=ml.get(i))&&io(e,t),s=l.createElement("script"),dt(s),At(s,"link",e),l.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},a.set(i,s))}}function sv(e,t){hn.M(e,t);var l=pu;if(l&&e){var a=Ba(l).hoistableScripts,i=gu(e),s=a.get(i);s||(s=l.querySelector(Sr(i)),s||(e=A({src:e,async:!0,type:"module"},t),(t=ml.get(i))&&io(e,t),s=l.createElement("script"),dt(s),At(s,"link",e),l.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},a.set(i,s))}}function Ap(e,t,l,a){var i=(i=fe.current)?Wi(i):null;if(!i)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=yu(l.href),l=Ba(i).hoistableStyles,a=l.get(t),a||(a={type:"style",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=yu(l.href);var s=Ba(i).hoistableStyles,d=s.get(e);if(d||(i=i.ownerDocument||i,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},s.set(e,d),(s=i.querySelector(_r(e)))&&!s._p&&(d.instance=s,d.state.loading=5),ml.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},ml.set(e,l),s||fv(i,e,l,d.state))),t&&a===null)throw Error(c(528,""));return d}if(t&&a!==null)throw Error(c(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=gu(l),l=Ba(i).hoistableScripts,a=l.get(t),a||(a={type:"script",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function yu(e){return'href="'+al(e)+'"'}function _r(e){return'link[rel="stylesheet"]['+e+"]"}function _p(e){return A({},e,{"data-precedence":e.precedence,precedence:null})}function fv(e,t,l,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),At(t,"link",l),dt(t),e.head.appendChild(t))}function gu(e){return'[src="'+al(e)+'"]'}function Sr(e){return"script[async]"+e}function Sp(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+al(l.href)+'"]');if(a)return t.instance=a,dt(a),a;var i=A({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),dt(a),At(a,"style",i),Ii(a,l.precedence,e),t.instance=a;case"stylesheet":i=yu(l.href);var s=e.querySelector(_r(i));if(s)return t.state.loading|=4,t.instance=s,dt(s),s;a=_p(l),(i=ml.get(i))&&ro(a,i),s=(e.ownerDocument||e).createElement("link"),dt(s);var d=s;return d._p=new Promise(function(g,M){d.onload=g,d.onerror=M}),At(s,"link",a),t.state.loading|=4,Ii(s,l.precedence,e),t.instance=s;case"script":return s=gu(l.src),(i=e.querySelector(Sr(s)))?(t.instance=i,dt(i),i):(a=l,(i=ml.get(s))&&(a=A({},l),io(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),dt(i),At(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Ii(a,l.precedence,e));return t.instance}function Ii(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,s=i,d=0;d title"):null)}function ov(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function xp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function mv(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var i=yu(a.href),s=t.querySelector(_r(i));if(s){t=s._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=ec.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=s,dt(s);return}s=t.ownerDocument||t,a=_p(a),(i=ml.get(i))&&ro(a,i),s=s.createElement("link"),dt(s);var d=s;d._p=new Promise(function(g,M){d.onload=g,d.onerror=M}),At(s,"link",a),l.instance=s}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=ec.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var co=0;function dv(e,t){return e.stylesheets&&e.count===0&&lc(e,e.stylesheets),0co?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function ec(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)lc(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var tc=null;function lc(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,tc=new Map,t.forEach(hv,e),tc=null,ec.call(e))}function hv(e,t){if(!(t.state.loading&4)){var l=tc.get(e);if(l)var a=l.get(null);else{l=new Map,tc.set(e,l);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),s=0;s"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(u){console.error(u)}}return n(),xo.exports=Dx(),xo.exports}var Mx=$x();const wx=Tv(Mx);function xa(n){return class{dependencyChanged;deps;exports;loaded;root;state;original_str;toString(){return n.serialise(this.state,this.gatherImports())}gatherImports(){let u=n.Ports.empty;for(const r in this.deps)"exports"in this.deps[r]&&(u=n.Ports.combine(u,this.deps[r].exports));return u}render(u,r){let c=n.make;this.root.render(v.jsx(c,{content:this.state,imports:this.gatherImports(),reset:()=>{r(0)},onChange:(f,o)=>{this.state=f,o&&(this.exports=o,u(f)),this.render(u,r)}}))}constructor(u,r,c,f,o,m){if(this.deps=r,this.original_str=u,this.loaded=!1,m!=null){const p=document.createElement("div");m.innerHTML="",m.appendChild(p),this.root=wx.createRoot(p)}const h=this.gatherImports();var y=n.deserialise(u,h);y.TAG=="Ok"?(this.exports=y._0[1],this.state=y._0[0],this.dependencyChanged=(p,T)=>{this.deps[p]=T,this.render(c,o)},f(null),this.loaded=!0,this.render(c,o)):m.innerHTML=y._0}}}jv({"hol-comp":xa(_x),"hol-inductive":xa(Sx),"hol-config":xa(xx),"hol-proof":xa(Ex),"hol-notation":xa(Tx),"hol-string":xa(Nx),"hol-string-proof":xa(jx)}); +`+a.stack}}var Ic=Object.prototype.hasOwnProperty,Pc=n.unstable_scheduleCallback,es=n.unstable_cancelCallback,tg=n.unstable_shouldYield,lg=n.unstable_requestPaint,Qt=n.unstable_now,ng=n.unstable_getCurrentPriorityLevel,qm=n.unstable_ImmediatePriority,Hm=n.unstable_UserBlockingPriority,Zr=n.unstable_NormalPriority,ag=n.unstable_LowPriority,Vm=n.unstable_IdlePriority,ug=n.log,rg=n.unstable_setDisableYieldValue,zu=null,Zt=null;function Gn(e){if(typeof ug=="function"&&rg(e),Zt&&typeof Zt.setStrictMode=="function")try{Zt.setStrictMode(zu,e)}catch{}}var Kt=Math.clz32?Math.clz32:sg,ig=Math.log,cg=Math.LN2;function sg(e){return e>>>=0,e===0?32:31-(ig(e)/cg|0)|0}var Kr=256,Jr=262144,Fr=4194304;function ua(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Wr(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var i=0,s=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var g=a&134217727;return g!==0?(a=g&~s,a!==0?i=ua(a):(d&=g,d!==0?i=ua(d):l||(l=g&~e,l!==0&&(i=ua(l))))):(g=a&~s,g!==0?i=ua(g):d!==0?i=ua(d):l||(l=a&~e,l!==0&&(i=ua(l)))),i===0?0:t!==0&&t!==i&&(t&s)===0&&(s=i&-i,l=t&-t,s>=l||s===32&&(l&4194048)!==0)?t:i}function Cu(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function fg(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lm(){var e=Fr;return Fr<<=1,(Fr&62914560)===0&&(Fr=4194304),e}function ts(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function ku(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function og(e,t,l,a,i,s){var d=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var g=e.entanglements,w=e.expirationTimes,K=e.hiddenUpdates;for(l=d&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var gg=/[\n"\\]/g;function il(e){return e.replace(gg,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function is(e,t,l,a,i,s,d,g){e.name="",d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"?e.type=d:e.removeAttribute("type"),t!=null?d==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+rl(t)):e.value!==""+rl(t)&&(e.value=""+rl(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?cs(e,d,rl(t)):l!=null?cs(e,d,rl(l)):a!=null&&e.removeAttribute("value"),i==null&&s!=null&&(e.defaultChecked=!!s),i!=null&&(e.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+rl(g):e.removeAttribute("name")}function ld(e,t,l,a,i,s,d,g){if(s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(e.type=s),t!=null||l!=null){if(!(s!=="submit"&&s!=="reset"||t!=null)){rs(e);return}l=l!=null?""+rl(l):"",t=t!=null?""+rl(t):l,g||t===e.value||(e.value=t),e.defaultValue=t}a=a??i,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=g?e.checked:!!a,e.defaultChecked=!!a,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),rs(e)}function cs(e,t,l){t==="number"&&ei(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function qa(e,t,l,a){if(e=e.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ds=!1;if(tn)try{var Hu={};Object.defineProperty(Hu,"passive",{get:function(){ds=!0}}),window.addEventListener("test",Hu,Hu),window.removeEventListener("test",Hu,Hu)}catch{ds=!1}var jn=null,hs=null,li=null;function sd(){if(li)return li;var e,t=hs,l=t.length,a,i="value"in jn?jn.value:jn.textContent,s=i.length;for(e=0;e=Xu),pd=" ",yd=!1;function gd(e,t){switch(e){case"keyup":return Yg.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Xa=!1;function Zg(e,t){switch(e){case"compositionend":return bd(t);case"keypress":return t.which!==32?null:(yd=!0,pd);case"textInput":return e=t.data,e===pd&&yd?null:e;default:return null}}function Kg(e,t){if(Xa)return e==="compositionend"||!vs&&gd(e,t)?(e=sd(),li=hs=jn=null,Xa=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=Gd(l)}}function jd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?jd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Od(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ei(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=ei(e.document)}return t}function Ss(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var lb=tn&&"documentMode"in document&&11>=document.documentMode,Ya=null,Ts=null,Ku=null,Es=!1;function Rd(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Es||Ya==null||Ya!==ei(a)||(a=Ya,"selectionStart"in a&&Ss(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ku&&Zu(Ku,a)||(Ku=a,a=Ji(Ts,"onSelect"),0>=d,i-=d,Hl=1<<32-Kt(t)+i|l<be?(Ee=oe,oe=null):Ee=oe.sibling;var Oe=F(L,oe,Z[be],ne);if(Oe===null){oe===null&&(oe=Ee);break}e&&oe&&Oe.alternate===null&&t(L,oe),q=s(Oe,q,be),je===null?me=Oe:je.sibling=Oe,je=Oe,oe=Ee}if(be===Z.length)return l(L,oe),Ge&&nn(L,be),me;if(oe===null){for(;bebe?(Ee=oe,oe=null):Ee=oe.sibling;var Fn=F(L,oe,Oe.value,ne);if(Fn===null){oe===null&&(oe=Ee);break}e&&oe&&Fn.alternate===null&&t(L,oe),q=s(Fn,q,be),je===null?me=Fn:je.sibling=Fn,je=Fn,oe=Ee}if(Oe.done)return l(L,oe),Ge&&nn(L,be),me;if(oe===null){for(;!Oe.done;be++,Oe=Z.next())Oe=ae(L,Oe.value,ne),Oe!==null&&(q=s(Oe,q,be),je===null?me=Oe:je.sibling=Oe,je=Oe);return Ge&&nn(L,be),me}for(oe=a(oe);!Oe.done;be++,Oe=Z.next())Oe=I(oe,L,be,Oe.value,ne),Oe!==null&&(e&&Oe.alternate!==null&&oe.delete(Oe.key===null?be:Oe.key),q=s(Oe,q,be),je===null?me=Oe:je.sibling=Oe,je=Oe);return e&&oe.forEach(function(Sv){return t(L,Sv)}),Ge&&nn(L,be),me}function Be(L,q,Z,ne){if(typeof Z=="object"&&Z!==null&&Z.type===_&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case U:e:{for(var me=Z.key;q!==null;){if(q.key===me){if(me=Z.type,me===_){if(q.tag===7){l(L,q.sibling),ne=i(q,Z.props.children),ne.return=L,L=ne;break e}}else if(q.elementType===me||typeof me=="object"&&me!==null&&me.$$typeof===E&&ya(me)===q.type){l(L,q.sibling),ne=i(q,Z.props),er(ne,Z),ne.return=L,L=ne;break e}l(L,q);break}else t(L,q);q=q.sibling}Z.type===_?(ne=oa(Z.props.children,L.mode,ne,Z.key),ne.return=L,L=ne):(ne=mi(Z.type,Z.key,Z.props,null,L.mode,ne),er(ne,Z),ne.return=L,L=ne)}return d(L);case X:e:{for(me=Z.key;q!==null;){if(q.key===me)if(q.tag===4&&q.stateNode.containerInfo===Z.containerInfo&&q.stateNode.implementation===Z.implementation){l(L,q.sibling),ne=i(q,Z.children||[]),ne.return=L,L=ne;break e}else{l(L,q);break}else t(L,q);q=q.sibling}ne=Ds(Z,L.mode,ne),ne.return=L,L=ne}return d(L);case E:return Z=ya(Z),Be(L,q,Z,ne)}if(M(Z))return fe(L,q,Z,ne);if(W(Z)){if(me=W(Z),typeof me!="function")throw Error(c(150));return Z=me.call(Z),de(L,q,Z,ne)}if(typeof Z.then=="function")return Be(L,q,vi(Z),ne);if(Z.$$typeof===j)return Be(L,q,pi(L,Z),ne);Ai(L,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,q!==null&&q.tag===6?(l(L,q.sibling),ne=i(q,Z),ne.return=L,L=ne):(l(L,q),ne=Rs(Z,L.mode,ne),ne.return=L,L=ne),d(L)):l(L,q)}return function(L,q,Z,ne){try{Pu=0;var me=Be(L,q,Z,ne);return lu=null,me}catch(oe){if(oe===tu||oe===gi)throw oe;var je=Ft(29,oe,null,L.mode);return je.lanes=ne,je.return=L,je}}}var ba=Pd(!0),eh=Pd(!1),Mn=!1;function Ls(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xs(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function wn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function zn(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Re&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=oi(e),kd(e,null,l),t}return fi(e,a,t,l),oi(e)}function tr(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Ym(e,l)}}function Ys(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var i=null,s=null;if(l=l.firstBaseUpdate,l!==null){do{var d={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};s===null?i=s=d:s=s.next=d,l=l.next}while(l!==null);s===null?i=s=t:s=s.next=t}else i=s=t;l={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var Qs=!1;function lr(){if(Qs){var e=eu;if(e!==null)throw e}}function nr(e,t,l,a){Qs=!1;var i=e.updateQueue;Mn=!1;var s=i.firstBaseUpdate,d=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var w=g,K=w.next;w.next=null,d===null?s=K:d.next=K,d=w;var le=e.alternate;le!==null&&(le=le.updateQueue,g=le.lastBaseUpdate,g!==d&&(g===null?le.firstBaseUpdate=K:g.next=K,le.lastBaseUpdate=w))}if(s!==null){var ae=i.baseState;d=0,le=K=w=null,g=s;do{var F=g.lane&-536870913,I=F!==g.lane;if(I?(Te&F)===F:(a&F)===F){F!==0&&F===Pa&&(Qs=!0),le!==null&&(le=le.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var fe=e,de=g;F=t;var Be=l;switch(de.tag){case 1:if(fe=de.payload,typeof fe=="function"){ae=fe.call(Be,ae,F);break e}ae=fe;break e;case 3:fe.flags=fe.flags&-65537|128;case 0:if(fe=de.payload,F=typeof fe=="function"?fe.call(Be,ae,F):fe,F==null)break e;ae=v({},ae,F);break e;case 2:Mn=!0}}F=g.callback,F!==null&&(e.flags|=64,I&&(e.flags|=8192),I=i.callbacks,I===null?i.callbacks=[F]:I.push(F))}else I={lane:F,tag:g.tag,payload:g.payload,callback:g.callback,next:null},le===null?(K=le=I,w=ae):le=le.next=I,d|=F;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;I=g,g=I.next,I.next=null,i.lastBaseUpdate=I,i.shared.pending=null}}while(!0);le===null&&(w=ae),i.baseState=w,i.firstBaseUpdate=K,i.lastBaseUpdate=le,s===null&&(i.shared.lanes=0),qn|=d,e.lanes=d,e.memoizedState=ae}}function th(e,t){if(typeof e!="function")throw Error(c(191,e));e.call(t)}function lh(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;es?s:8;var d=A.T,g={};A.T=g,mf(e,!1,t,l);try{var w=i(),K=A.S;if(K!==null&&K(g,w),w!==null&&typeof w=="object"&&typeof w.then=="function"){var le=ob(w,a);rr(e,t,le,tl(e))}else rr(e,t,a,tl(e))}catch(ae){rr(e,t,{then:function(){},status:"rejected",reason:ae},tl())}finally{z.p=s,d!==null&&g.types!==null&&(d.types=g.types),A.T=d}}function gb(){}function ff(e,t,l,a){if(e.tag!==5)throw Error(c(476));var i=wh(e).queue;Mh(e,i,t,Y,l===null?gb:function(){return zh(e),l(a)})}function wh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Y,baseState:Y,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:cn,lastRenderedState:Y},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:cn,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function zh(e){var t=wh(e);t.next===null&&(t=e.alternate.memoizedState),rr(e,t.next.queue,{},tl())}function of(){return At(Tr)}function Ch(){return at().memoizedState}function kh(){return at().memoizedState}function bb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=tl();e=wn(l);var a=zn(t,e,l);a!==null&&(Vt(a,t,l),tr(a,t,l)),t={cache:Us()},e.payload=t;return}t=t.return}}function vb(e,t,l){var a=tl();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Ri(e)?Uh(t,l):(l=js(e,t,l,a),l!==null&&(Vt(l,e,a),qh(l,t,a)))}function Bh(e,t,l){var a=tl();rr(e,t,l,a)}function rr(e,t,l,a){var i={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(Ri(e))Uh(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var d=t.lastRenderedState,g=s(d,l);if(i.hasEagerState=!0,i.eagerState=g,Jt(g,d))return fi(e,t,i,0),Ue===null&&si(),!1}catch{}if(l=js(e,t,i,a),l!==null)return Vt(l,e,a),qh(l,t,a),!0}return!1}function mf(e,t,l,a){if(a={lane:2,revertLane:Xf(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Ri(e)){if(t)throw Error(c(479))}else t=js(e,l,a,2),t!==null&&Vt(t,e,2)}function Ri(e){var t=e.alternate;return e===ge||t!==null&&t===ge}function Uh(e,t){au=Ti=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function qh(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,Ym(e,l)}}var ir={readContext:At,use:Gi,useCallback:Pe,useContext:Pe,useEffect:Pe,useImperativeHandle:Pe,useLayoutEffect:Pe,useInsertionEffect:Pe,useMemo:Pe,useReducer:Pe,useRef:Pe,useState:Pe,useDebugValue:Pe,useDeferredValue:Pe,useTransition:Pe,useSyncExternalStore:Pe,useId:Pe,useHostTransitionStatus:Pe,useFormState:Pe,useActionState:Pe,useOptimistic:Pe,useMemoCache:Pe,useCacheRefresh:Pe};ir.useEffectEvent=Pe;var Hh={readContext:At,use:Gi,useCallback:function(e,t){return Mt().memoizedState=[e,t===void 0?null:t],e},useContext:At,useEffect:Eh,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,ji(4194308,4,jh.bind(null,t,e),l)},useLayoutEffect:function(e,t){return ji(4194308,4,e,t)},useInsertionEffect:function(e,t){ji(4,2,e,t)},useMemo:function(e,t){var l=Mt();t=t===void 0?null:t;var a=e();if(va){Gn(!0);try{e()}finally{Gn(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=Mt();if(l!==void 0){var i=l(t);if(va){Gn(!0);try{l(t)}finally{Gn(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=vb.bind(null,ge,e),[a.memoizedState,e]},useRef:function(e){var t=Mt();return e={current:e},t.memoizedState=e},useState:function(e){e=af(e);var t=e.queue,l=Bh.bind(null,ge,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:cf,useDeferredValue:function(e,t){var l=Mt();return sf(l,e,t)},useTransition:function(){var e=af(!1);return e=Mh.bind(null,ge,e.queue,!0,!1),Mt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=ge,i=Mt();if(Ge){if(l===void 0)throw Error(c(407));l=l()}else{if(l=t(),Ue===null)throw Error(c(349));(Te&127)!==0||ch(a,t,l)}i.memoizedState=l;var s={value:l,getSnapshot:t};return i.queue=s,Eh(fh.bind(null,a,s,e),[e]),a.flags|=2048,ru(9,{destroy:void 0},sh.bind(null,a,s,l,t),null),l},useId:function(){var e=Mt(),t=Ue.identifierPrefix;if(Ge){var l=Vl,a=Hl;l=(a&~(1<<32-Kt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=Ei++,0<\/script>",s=s.removeChild(s.firstChild);break;case"select":s=typeof a.is=="string"?d.createElement("select",{is:a.is}):d.createElement("select"),a.multiple?s.multiple=!0:a.size&&(s.size=a.size);break;default:s=typeof a.is=="string"?d.createElement(i,{is:a.is}):d.createElement(i)}}s[bt]=t,s[Ct]=a;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)s.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=s;e:switch(St(s,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&fn(t)}}return Ve(t),Gf(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&fn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(c(166));if(e=ie.current,Wa(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,i=vt,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[bt]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||rp(e.nodeValue,l)),e||Dn(t,!0)}else e=Fi(e).createTextNode(a),e[bt]=t,t.stateNode=e}return Ve(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=Wa(t),l!==null){if(e===null){if(!a)throw Error(c(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(557));e[bt]=t}else ma(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ve(t),e=!1}else l=zs(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(It(t),t):(It(t),null);if((t.flags&128)!==0)throw Error(c(558))}return Ve(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Wa(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(c(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(c(317));i[bt]=t}else ma(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ve(t),i=!1}else i=zs(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(It(t),t):(It(t),null)}return It(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),s=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(s=a.memoizedState.cachePool.pool),s!==i&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),zi(t,t.updateQueue),Ve(t),null);case 4:return Ae(),e===null&&Kf(t.stateNode.containerInfo),Ve(t),null;case 10:return un(t.type),Ve(t),null;case 19:if(V(nt),a=t.memoizedState,a===null)return Ve(t),null;if(i=(t.flags&128)!==0,s=a.rendering,s===null)if(i)sr(a,!1);else{if(et!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(s=Si(e),s!==null){for(t.flags|=128,sr(a,!1),e=s.updateQueue,t.updateQueue=e,zi(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)Bd(l,e),l=l.sibling;return ee(nt,nt.current&1|2),Ge&&nn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Qt()>qi&&(t.flags|=128,i=!0,sr(a,!1),t.lanes=4194304)}else{if(!i)if(e=Si(s),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,zi(t,e),sr(a,!0),a.tail===null&&a.tailMode==="hidden"&&!s.alternate&&!Ge)return Ve(t),null}else 2*Qt()-a.renderingStartTime>qi&&l!==536870912&&(t.flags|=128,i=!0,sr(a,!1),t.lanes=4194304);a.isBackwards?(s.sibling=t.child,t.child=s):(e=a.last,e!==null?e.sibling=s:t.child=s,a.last=s)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Qt(),e.sibling=null,l=nt.current,ee(nt,i?l&1|2:l&1),Ge&&nn(t,a.treeForkCount),e):(Ve(t),null);case 22:case 23:return It(t),Ks(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Ve(t),t.subtreeFlags&6&&(t.flags|=8192)):Ve(t),l=t.updateQueue,l!==null&&zi(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&V(pa),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),un(ut),Ve(t),null;case 25:return null;case 30:return null}throw Error(c(156,t.tag))}function Eb(e,t){switch(Ms(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return un(ut),Ae(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return $t(t),null;case 31:if(t.memoizedState!==null){if(It(t),t.alternate===null)throw Error(c(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(It(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return V(nt),null;case 4:return Ae(),null;case 10:return un(t.type),null;case 22:case 23:return It(t),Ks(),e!==null&&V(pa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return un(ut),null;case 25:return null;default:return null}}function o0(e,t){switch(Ms(t),t.tag){case 3:un(ut),Ae();break;case 26:case 27:case 5:$t(t);break;case 4:Ae();break;case 31:t.memoizedState!==null&&It(t);break;case 13:It(t);break;case 19:V(nt);break;case 10:un(t.type);break;case 22:case 23:It(t),Ks(),e!==null&&V(pa);break;case 24:un(ut)}}function fr(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var i=a.next;l=i;do{if((l.tag&e)===e){a=void 0;var s=l.create,d=l.inst;a=s(),d.destroy=a}l=l.next}while(l!==i)}}catch(g){$e(t,t.return,g)}}function Bn(e,t,l){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var s=i.next;a=s;do{if((a.tag&e)===e){var d=a.inst,g=d.destroy;if(g!==void 0){d.destroy=void 0,i=t;var w=l,K=g;try{K()}catch(le){$e(i,w,le)}}}a=a.next}while(a!==s)}}catch(le){$e(t,t.return,le)}}function m0(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{lh(t,l)}catch(a){$e(e,e.return,a)}}}function d0(e,t,l){l.props=Aa(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){$e(e,t,a)}}function or(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(i){$e(e,t,i)}}function Ll(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(i){$e(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(i){$e(e,t,i)}else l.current=null}function h0(e){var t=e.type,l=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break e;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(i){$e(e,e.return,i)}}function Nf(e,t,l){try{var a=e.stateNode;Qb(a,e.type,l,t),a[Ct]=t}catch(i){$e(e,e.return,i)}}function p0(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Yn(e.type)||e.tag===4}function jf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||p0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Yn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Of(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=en));else if(a!==4&&(a===27&&Yn(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(Of(e,t,l),e=e.sibling;e!==null;)Of(e,t,l),e=e.sibling}function Ci(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(a!==4&&(a===27&&Yn(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Ci(e,t,l),e=e.sibling;e!==null;)Ci(e,t,l),e=e.sibling}function y0(e){var t=e.stateNode,l=e.memoizedProps;try{for(var a=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);St(t,a,l),t[bt]=e,t[Ct]=l}catch(s){$e(e,e.return,s)}}var on=!1,ct=!1,Rf=!1,g0=typeof WeakSet=="function"?WeakSet:Set,pt=null;function xb(e,t){if(e=e.containerInfo,Wf=nc,e=Od(e),Ss(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var i=a.anchorOffset,s=a.focusNode;a=a.focusOffset;try{l.nodeType,s.nodeType}catch{l=null;break e}var d=0,g=-1,w=-1,K=0,le=0,ae=e,F=null;t:for(;;){for(var I;ae!==l||i!==0&&ae.nodeType!==3||(g=d+i),ae!==s||a!==0&&ae.nodeType!==3||(w=d+a),ae.nodeType===3&&(d+=ae.nodeValue.length),(I=ae.firstChild)!==null;)F=ae,ae=I;for(;;){if(ae===e)break t;if(F===l&&++K===i&&(g=d),F===s&&++le===a&&(w=d),(I=ae.nextSibling)!==null)break;ae=F,F=ae.parentNode}ae=I}l=g===-1||w===-1?null:{start:g,end:w}}else l=null}l=l||{start:0,end:0}}else l=null;for(If={focusedElem:e,selectionRange:l},nc=!1,pt=t;pt!==null;)if(t=pt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,pt=e;else for(;pt!==null;){switch(t=pt,s=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),St(s,a,l),s[bt]=e,ht(s),a=s;break e;case"link":var d=Tp("link","href",i).get(a+(l.href||""));if(d){for(var g=0;gBe&&(d=Be,Be=de,de=d);var L=Nd(g,de),q=Nd(g,Be);if(L&&q&&(I.rangeCount!==1||I.anchorNode!==L.node||I.anchorOffset!==L.offset||I.focusNode!==q.node||I.focusOffset!==q.offset)){var Z=ae.createRange();Z.setStart(L.node,L.offset),I.removeAllRanges(),de>Be?(I.addRange(Z),I.extend(q.node,q.offset)):(Z.setEnd(q.node,q.offset),I.addRange(Z))}}}}for(ae=[],I=g;I=I.parentNode;)I.nodeType===1&&ae.push({element:I,left:I.scrollLeft,top:I.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;gl?32:l,A.T=null,l=kf,kf=null;var s=Vn,d=yn;if(mt=0,ou=Vn=null,yn=0,(Re&6)!==0)throw Error(c(331));var g=Re;if(Re|=4,j0(s.current),x0(s,s.current,d,l),Re=g,gr(0,!1),Zt&&typeof Zt.onPostCommitFiberRoot=="function")try{Zt.onPostCommitFiberRoot(zu,s)}catch{}return!0}finally{z.p=i,A.T=a,Q0(e,t)}}function K0(e,t,l){t=sl(l,t),t=yf(e.stateNode,t,2),e=zn(e,t,2),e!==null&&(ku(e,2),Xl(e))}function $e(e,t,l){if(e.tag===3)K0(e,e,l);else for(;t!==null;){if(t.tag===3){K0(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Hn===null||!Hn.has(a))){e=sl(l,e),l=Jh(2),a=zn(t,l,2),a!==null&&(Fh(l,a,t,e),ku(a,2),Xl(a));break}}t=t.return}}function Hf(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new jb;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(l)||(Mf=!0,i.add(l),e=Mb.bind(null,e,t,l),t.then(e,e))}function Mb(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Ue===e&&(Te&l)===l&&(et===4||et===3&&(Te&62914560)===Te&&300>Qt()-Ui?(Re&2)===0&&mu(e,0):wf|=l,fu===Te&&(fu=0)),Xl(e)}function J0(e,t){t===0&&(t=Lm()),e=fa(e,t),e!==null&&(ku(e,t),Xl(e))}function wb(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),J0(e,l)}function zb(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(l=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(c(314))}a!==null&&a.delete(t),J0(e,l)}function Cb(e,t){return Pc(e,t)}var Qi=null,hu=null,Vf=!1,Zi=!1,Lf=!1,Xn=0;function Xl(e){e!==hu&&e.next===null&&(hu===null?Qi=hu=e:hu=hu.next=e),Zi=!0,Vf||(Vf=!0,Bb())}function gr(e,t){if(!Lf&&Zi){Lf=!0;do for(var l=!1,a=Qi;a!==null;){if(e!==0){var i=a.pendingLanes;if(i===0)var s=0;else{var d=a.suspendedLanes,g=a.pingedLanes;s=(1<<31-Kt(42|e)+1)-1,s&=i&~(d&~g),s=s&201326741?s&201326741|1:s?s|2:0}s!==0&&(l=!0,P0(a,s))}else s=Te,s=Wr(a,a===Ue?s:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(s&3)===0||Cu(a,s)||(l=!0,P0(a,s));a=a.next}while(l);Lf=!1}}function kb(){F0()}function F0(){Zi=Vf=!1;var e=0;Xn!==0&&Kb()&&(e=Xn);for(var t=Qt(),l=null,a=Qi;a!==null;){var i=a.next,s=W0(a,t);s===0?(a.next=null,l===null?Qi=i:l.next=i,i===null&&(hu=l)):(l=a,(e!==0||(s&3)!==0)&&(Zi=!0)),a=i}mt!==0&&mt!==5||gr(e),Xn!==0&&(Xn=0)}function W0(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,s=e.pendingLanes&-62914561;0g)break;var le=w.transferSize,ae=w.initiatorType;le&&ip(ae)&&(w=w.responseEnd,d+=le*(w"u"?null:document;function vp(e,t,l){var a=pu;if(a&&typeof t=="string"&&t){var i=il(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof l=="string"&&(i+='[crossorigin="'+l+'"]'),bp.has(i)||(bp.add(i),e={rel:e,crossOrigin:l,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),St(t,"link",e),ht(t),a.head.appendChild(t)))}}function nv(e){gn.D(e),vp("dns-prefetch",e,null)}function av(e,t){gn.C(e,t),vp("preconnect",e,t)}function uv(e,t,l){gn.L(e,t,l);var a=pu;if(a&&e&&t){var i='link[rel="preload"][as="'+il(t)+'"]';t==="image"&&l&&l.imageSrcSet?(i+='[imagesrcset="'+il(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(i+='[imagesizes="'+il(l.imageSizes)+'"]')):i+='[href="'+il(e)+'"]';var s=i;switch(t){case"style":s=yu(e);break;case"script":s=gu(e)}pl.has(s)||(e=v({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),pl.set(s,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(_r(s))||t==="script"&&a.querySelector(Sr(s))||(t=a.createElement("link"),St(t,"link",e),ht(t),a.head.appendChild(t)))}}function rv(e,t){gn.m(e,t);var l=pu;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+il(a)+'"][href="'+il(e)+'"]',s=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":s=gu(e)}if(!pl.has(s)&&(e=v({rel:"modulepreload",href:e},t),pl.set(s,e),l.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Sr(s)))return}a=l.createElement("link"),St(a,"link",e),ht(a),l.head.appendChild(a)}}}function iv(e,t,l){gn.S(e,t,l);var a=pu;if(a&&e){var i=Ba(a).hoistableStyles,s=yu(e);t=t||"default";var d=i.get(s);if(!d){var g={loading:0,preload:null};if(d=a.querySelector(_r(s)))g.loading=5;else{e=v({rel:"stylesheet",href:e,"data-precedence":t},l),(l=pl.get(s))&&uo(e,l);var w=d=a.createElement("link");ht(w),St(w,"link",e),w._p=new Promise(function(K,le){w.onload=K,w.onerror=le}),w.addEventListener("load",function(){g.loading|=1}),w.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Ii(d,t,a)}d={type:"stylesheet",instance:d,count:1,state:g},i.set(s,d)}}}function cv(e,t){gn.X(e,t);var l=pu;if(l&&e){var a=Ba(l).hoistableScripts,i=gu(e),s=a.get(i);s||(s=l.querySelector(Sr(i)),s||(e=v({src:e,async:!0},t),(t=pl.get(i))&&ro(e,t),s=l.createElement("script"),ht(s),St(s,"link",e),l.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},a.set(i,s))}}function sv(e,t){gn.M(e,t);var l=pu;if(l&&e){var a=Ba(l).hoistableScripts,i=gu(e),s=a.get(i);s||(s=l.querySelector(Sr(i)),s||(e=v({src:e,async:!0,type:"module"},t),(t=pl.get(i))&&ro(e,t),s=l.createElement("script"),ht(s),St(s,"link",e),l.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},a.set(i,s))}}function Ap(e,t,l,a){var i=(i=ie.current)?Wi(i):null;if(!i)throw Error(c(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=yu(l.href),l=Ba(i).hoistableStyles,a=l.get(t),a||(a={type:"style",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=yu(l.href);var s=Ba(i).hoistableStyles,d=s.get(e);if(d||(i=i.ownerDocument||i,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},s.set(e,d),(s=i.querySelector(_r(e)))&&!s._p&&(d.instance=s,d.state.loading=5),pl.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},pl.set(e,l),s||fv(i,e,l,d.state))),t&&a===null)throw Error(c(528,""));return d}if(t&&a!==null)throw Error(c(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=gu(l),l=Ba(i).hoistableScripts,a=l.get(t),a||(a={type:"script",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,e))}}function yu(e){return'href="'+il(e)+'"'}function _r(e){return'link[rel="stylesheet"]['+e+"]"}function _p(e){return v({},e,{"data-precedence":e.precedence,precedence:null})}function fv(e,t,l,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),St(t,"link",l),ht(t),e.head.appendChild(t))}function gu(e){return'[src="'+il(e)+'"]'}function Sr(e){return"script[async]"+e}function Sp(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+il(l.href)+'"]');if(a)return t.instance=a,ht(a),a;var i=v({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),ht(a),St(a,"style",i),Ii(a,l.precedence,e),t.instance=a;case"stylesheet":i=yu(l.href);var s=e.querySelector(_r(i));if(s)return t.state.loading|=4,t.instance=s,ht(s),s;a=_p(l),(i=pl.get(i))&&uo(a,i),s=(e.ownerDocument||e).createElement("link"),ht(s);var d=s;return d._p=new Promise(function(g,w){d.onload=g,d.onerror=w}),St(s,"link",a),t.state.loading|=4,Ii(s,l.precedence,e),t.instance=s;case"script":return s=gu(l.src),(i=e.querySelector(Sr(s)))?(t.instance=i,ht(i),i):(a=l,(i=pl.get(s))&&(a=v({},l),ro(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),ht(i),St(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(c(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Ii(a,l.precedence,e));return t.instance}function Ii(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,s=i,d=0;d title"):null)}function ov(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function xp(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function mv(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var i=yu(a.href),s=t.querySelector(_r(i));if(s){t=s._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=ec.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=s,ht(s);return}s=t.ownerDocument||t,a=_p(a),(i=pl.get(i))&&uo(a,i),s=s.createElement("link"),ht(s);var d=s;d._p=new Promise(function(g,w){d.onload=g,d.onerror=w}),St(s,"link",a),l.instance=s}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=ec.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var io=0;function dv(e,t){return e.stylesheets&&e.count===0&&lc(e,e.stylesheets),0io?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function ec(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)lc(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var tc=null;function lc(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,tc=new Map,t.forEach(hv,e),tc=null,ec.call(e))}function hv(e,t){if(!(t.state.loading&4)){var l=tc.get(e);if(l)var a=l.get(null);else{l=new Map,tc.set(e,l);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),s=0;s"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(u){console.error(u)}}return n(),Eo.exports=$x(),Eo.exports}var wx=Mx();const zx=Tv(wx);function Ta(n){return class{dependencyChanged;deps;exports;loaded;root;state;original_str;toString(){return n.serialise(this.state,this.gatherImports())}gatherImports(){let u=n.Ports.empty;for(const r in this.deps)"exports"in this.deps[r]&&(u=n.Ports.combine(u,this.deps[r].exports));return u}render(u,r){let c=n.make;this.root.render(b.jsx(c,{content:this.state,imports:this.gatherImports(),reset:()=>{r(0)},onChange:(f,o)=>{this.state=f,o&&(this.exports=o,u(f)),this.render(u,r)}}))}constructor(u,r,c,f,o,m){if(this.deps=r,this.original_str=u,this.loaded=!1,m!=null){const p=document.createElement("div");m.innerHTML="",m.appendChild(p),this.root=zx.createRoot(p)}const h=this.gatherImports();var y=n.deserialise(u,h);y.TAG=="Ok"?(this.exports=y._0[1],this.state=y._0[0],this.dependencyChanged=(p,S)=>{this.deps[p]=S,this.render(c,o)},f(null),this.loaded=!0,this.render(c,o)):m.innerHTML=y._0}}}jv({"hol-comp":Ta(Sx),"hol-inductive":Ta(Tx),"hol-config":Ta(Gx),"hol-proof":Ta(xx),"hol-notation":Ta(Ex),"hol-string":Ta(jx),"hol-string-proof":Ta(Ox)}); diff --git a/forest/theme/outside-click.js b/forest/theme/outside-click.js index 6c48529..0329a3e 100644 --- a/forest/theme/outside-click.js +++ b/forest/theme/outside-click.js @@ -9,9 +9,23 @@ groups.forEach((groupClass) => { const members = document.querySelectorAll(`.${groupClass}`); const insideAny = Array.from(members).some((el) => el.contains(e.target)); + //console.log("outsideclick mousedown check", {target: e.target, insideAny}); if (!insideAny) { members.forEach((el) => el.dispatchEvent(new CustomEvent("outsideclick"))); } }); }); + function focusGoalNearIndex(scopeEl, index) { + const scope = scopeEl.closest(".theorem-instance") || document; + const goals = Array.from(scope.querySelectorAll(".proof-goal")); + const next = goals[Math.min(index, goals.length - 1)]; + if (next) next.focus(); + } + window.focusGoalNearIndex = focusGoalNearIndex; + function computeGoalIndex(el) { + const scope = el.closest(".theorem-instance") || document; + return Array.from(scope.querySelectorAll(".proof-goal")).indexOf(el); + } + window.computeGoalIndex = computeGoalIndex; + })(); \ No newline at end of file diff --git a/forest/theme/resizable.js b/forest/theme/resizable.js index 4df3d46..3b4a026 100644 --- a/forest/theme/resizable.js +++ b/forest/theme/resizable.js @@ -1,13 +1,16 @@ // resizable.js (function () { + let lastWidth = null; function initResizable(el) { const handle = document.createElement("div"); handle.className = "resize-handle"; el.prepend(handle); const minWidth = parseInt(el.dataset.minWidth || "220", 10); - const maxWidth = parseInt(el.dataset.maxWidth || "600", 10); - + const maxWidth = parseInt(el.dataset.maxWidth || "1000", 10); + if (lastWidth != null) { + el.style.width = lastWidth + "px"; + } let dragging = false; handle.addEventListener("mousedown", (e) => { @@ -20,7 +23,9 @@ if (!dragging) return; const rect = el.getBoundingClientRect(); const newWidth = rect.right - e.clientX; - el.style.width = Math.min(maxWidth, Math.max(minWidth, newWidth)) + "px"; + const newWidth2 = Math.min(maxWidth, Math.max(minWidth, newWidth)) + el.style.width = newWidth2 + "px"; + lastWidth = newWidth2; }); window.addEventListener("mouseup", () => { diff --git a/forest/trees/theorem.tree b/forest/trees/theorem.tree index 94e7c9a..2537599 100644 --- a/forest/trees/theorem.tree +++ b/forest/trees/theorem.tree @@ -1,7 +1,7 @@ \import{holbert-macros} \title{Proofs!} \taxon{Theorem} -\p{All [even](evens) numbers are natural numbers.} +\p{All [even](evens) numbers are natural numbers. Note that [even numbers](evens) are defined in a separate page, but changes are seamlessly synced over. } \hol/proof{evensarenats}{ \hol/dep{config}{config} \hol/dep{nats}{nat} diff --git a/src/HOMethods.res b/src/HOMethods.res index 03a50ef..75b9606 100644 --- a/src/HOMethods.res +++ b/src/HOMethods.res @@ -54,14 +54,14 @@ module ConstructorDisjointness = { _mkSubgoal: Rule.t => 'a, ): Results.attached> => context.localFacts - ->Array.mapWithIndex((rule, i) => (i, rule, context.localFactNames->Belt.Array.get(i))) - ->Array.filterMap(((i, rule, nameOpt)) => - switch (rule, nameOpt) { - | ({Rule.vars: [], premises: []}, Some(factName)) if isDisjointEquation(rule.conclusion) => + ->Array.mapWithIndex((rule, i) => (i, rule)) + ->Array.filterMap(((i, rule)) => + switch rule { + | {Rule.vars: [], premises: []} if isDisjointEquation(rule.conclusion) => Some( Results.atAssumption( i, - [Results.Action(`disjointness ${factName}`, {factName: Local({index: i})}, Term.makeSubst())], + [Results.Action(Results.Text(`disjointness`), {factName: Local({index: i})}, Term.makeSubst())], ), ) | _ => None @@ -155,10 +155,10 @@ module ConstructorInjectivity = { mkSubgoal: Rule.t => 'a, ): Results.attached> => context.localFacts - ->Array.mapWithIndex((rule, i) => (i, rule, context.localFactNames->Belt.Array.get(i))) - ->Array.filterMap(((i, rule, nameOpt)) => - switch (rule, nameOpt) { - | ({Rule.vars: [], premises: []}, Some(factName)) => + ->Array.mapWithIndex((rule, i) => (i, rule)) + ->Array.filterMap(((i, rule)) => + switch rule { + | {Rule.vars: [], premises: []} => switch injectivityPairs(rule.conclusion) { | None => None | Some(pairs) => @@ -172,7 +172,7 @@ module ConstructorInjectivity = { i, [ Results.Action( - `injectivity ${factName}`, + Results.Text(`injectivity`), {factName:Local({index:i}), subgoal: subgoalRule->mkSubgoal}, Term.makeSubst(), ), diff --git a/src/HOTerm.res b/src/HOTerm.res index 554b7c0..06c5261 100644 --- a/src/HOTerm.res +++ b/src/HOTerm.res @@ -510,6 +510,16 @@ let parsePath = (str:string) => { | _ => ([],str) } } +let freshenMetas = (~existing: array, ~incoming: array): array => { + let taken = ref(existing) + incoming->Array.map(name => { + let rec freshen = candidate => + taken.contents->Array.some(n => n == candidate) ? freshen(candidate ++ "'") : candidate + let fresh = freshen(name) + taken := Array.concat(taken.contents, [fresh]) + fresh + }) +} let emptyGrammar = MixfixGrammar.compile( MixfixGrammar.opFromName("eq", "_=_", ~assoc=NonAssoc) diff --git a/src/Method.res b/src/Method.res index c32b448..16bb085 100644 --- a/src/Method.res +++ b/src/Method.res @@ -94,10 +94,17 @@ module Context = (Term: TERM, Judgment: JUDGMENT with module Term := Term) => { } module MethodResults = (Term: TERM) => { + type rec label = + | Text(string) + | Ref(RuleRef.t) // render via RuleRefView + | RefRule(RuleRef.t) // render the actual rule + | Seq(array