インタラクティブな証明支援システムエディタです。Coq、Lean、Isabelle、Agdaをサポートしています。
- 証明支援システムのインタラクティブな編集
- グレーモードでのCoq証明検証(YY/NYのみ許可)
- リアルタイムの構文ハイライト
- サーバーサイド実行
-
Vercel CLIをインストール(未インストールの場合):
npm install -g vercel
-
プロジェクトをデプロイ:
vercel
-
初回デプロイ時は設定を尋ねられるので、以下のように回答:
- Set up and deploy? → Y
- Which scope? → 個人アカウントを選択
- Link to existing project? → N
- Project name → ivucx(または任意)
- In which directory is your code located? → ./(Enter)
npm install
npm run dev/
├── api/ # Vercel API Routes
│ ├── check-login.js # ログイン状態チェック
│ └── suggest.js # サジェスチョン生成
├── editor.html # エディタページ
├── index.html # リダイレクトページ
├── Vucks.html # メインアプリケーション
├── package.json # プロジェクト設定
└── vercel.json # Vercel設定
GET /api/check-login- ログイン状態を取得POST /api/suggest- サジェスチョン生成
グレーモード(背景が灰色)でCoqを選択した場合:
- YY:
Qed.で終了 → 証明完成・形式検証済み - NY:
Admitted.で終了 → 未証明・仮受け入れ - YN/NN: エラーあり → 拒否(サーバー送信なし)
MIT
Run the SQL below in Supabase SQL Editor before using BlueMode auth:
supabase/blue_mode_auth.sql
Required Vercel environment variables:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
API routes used by BlueMode:
GET /api/check-loginPOST /api/blue-auth-signupPOST /api/blue-auth-loginPOST /api/blue-auth-logout
The current recommended topology is:
Supabasestores durable state:- auth/session data
- helper jobs
- conversion plans
- saved problems
Compute Enginehelper handles lightweight planning:- create / update conversion plans
- read the right source bundle from Supabase
- orchestrate GitHub Actions execution through the helper-compatible execution routes
- persist final problem rows
GitHub Actionshandles heavy execution:- Lean / Coq proof checking
- typed-lambda /
cic-v1conversion
Vercel(thisiVucxapp) remains the public entrypoint:- serves UI and auth routes
- proxies execution requests to the execution API
- proxies helper routes to the helper VM
Required environment variables on the main app:
HELPER_API_BASE_URL- Compute Engine helper for conversion, submission, and jobsHELPER_API_KEY(optional)HELPER_API_TIMEOUT_MS(optional)EXECUTION_API_BASE_URL(optional whenHELPER_API_BASE_URLpoints at a helper that exposes/api/lean-check,/api/coq-check, and/api/proof-convert)EXECUTION_API_KEY(optional; defaults toHELPER_API_KEYwhen the helper is reused as the execution endpoint)EXECUTION_API_PRIVATE_KEYorEXECUTION_API_PRIVATE_KEY_PATH(optional PEM request signing)EXECUTION_API_TIMEOUT_MSALLOW_LOCAL_EXECUTION_FALLBACK(optional, defaults tofalsein production)ALLOW_LOCAL_HELPER_FALLBACK(optional, defaults tofalsein production)
Accepted aliases for the execution server:
ORACLE_SERVER_BASE_URLORACLE_SERVER_API_KEYORACLE_SERVER_PRIVATE_KEYORACLE_SERVER_PRIVATE_KEY_PATHORACLE_SERVER_TIMEOUT_MS
Split behavior:
POST /api/lean-check-> Vercel proxies proof check to the configured execution API; ifEXECUTION_API_BASE_URLis unset, it can reuseHELPER_API_BASE_URLPOST /api/coq-check-> same as above for CoqPOST /api/proof-convert-> Vercel proxies typed-lambda /cic-v1conversion to the configured execution APIPOST /api/helper/check-> helper-routed proof check via the same execution backendPOST /api/helper/convert-> the helper creates a Supabase-backed conversion plan, then GitHub Actions executes itPOST /api/helper/submit-> the helper creates a Supabase-backed submission plan, then GitHub Actions executes it and the helper saves the problem rowGET /api/helper/info-> helper info plus deployment metadataGET /api/helper/schema-check-> helper-side Supabase schema diagnosis
The helper / executor side also needs:
NEXT_PUBLIC_SUPABASE_URLSUPABASE_SERVICE_ROLE_KEY- Lean / Coq toolchain setup in GitHub Actions
HELPER_API_KEYas a GitHub Actions secret when callbacks are protected
Recommended deployment note:
- The simplest Vercel setup is:
HELPER_API_BASE_URL=http://<gce-helper-ip-or-domain>EXECUTION_API_BASE_URLunset
- In that setup, direct proof routes on Vercel reuse the helper's Render-compatible execution routes, and the helper forwards heavy work to GitHub Actions.
- The browser-side helper UI now prefers the same-origin Vercel proxy in production, so it does not need direct cross-origin access to the helper VM for submit / job polling.
Google Compute Engine helper files:
../nodejs/deploy/gce/compose.yaml../nodejs/deploy/gce/runtime.env.example../nodejs/deploy/gce/startup-script.sh../nodejs/deploy/gce/create-instance.sh../nodejs/deploy/gce/create-firewall-rule.sh../nodejs/deploy/gce/README.md
Proxy routes:
GET /api/helper/infoPOST /api/helper/checkPOST /api/helper/submitPOST /api/helper/convertGET /api/helper/jobsGET /api/helper/jobs/:idGET /api/helper/jobs/:id/resultDELETE /api/helper/jobs/:id
Helper service files:
services/railway-helper/package.jsonservices/railway-helper/Dockerfileservices/railway-helper/index.jsservices/railway-helper/README.mdservices/railway-helper/.env.exampleservices/railway-helper/ADAPTER_PROTOCOL.mdservices/railway-helper/EXACT_EXPORT_SOURCES.mdsupabase/proof_helper.sqlsupabase/proof_helper_check.sql
If the helper is missing helper_conversion_plans, it can now fall back to in-memory planning for the current process, but durable planning still requires the Supabase schema above.