Convex Set Checker

Advanced mathematical constraint analyzer

Convexity Analysis

No constraints

Add constraints to analyze convexity

Add Constraint

Enter mathematical constraints using variables like x1, x2, x3...

Examples:

Source Code

'use client'

import { useState } from 'react'
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
import { ConstraintInput } from '@/components/constraint-input'
import { ConvexityVisualizer } from '@/components/convexity-visualizer'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import { CheckCircle, XCircle, AlertCircle } from 'lucide-react'

export interface Constraint {
  id: string
  expression: string
  type: 'equality' | 'inequality'
  coefficients: number[]
  constant: number
  operator: '=' | '>=' | '<=' | '>' | '<'
  isValid: boolean
  variables: string[]
}

export function ConvexityChecker() {
  const [constraints, setConstraints] = useState<Constraint[]>([])
  const [isConvex, setIsConvex] = useState<boolean | null>(null)
  const [analysis, setAnalysis] = useState<string>('')

  const addConstraint = (constraint: Constraint) => {
    setConstraints(prev => [...prev, constraint])
    analyzeConvexity([...constraints, constraint])
  }

  const analyzeConvexity = (constraintList: Constraint[]) => {
    if (constraintList.length === 0) {
      setIsConvex(null)
      setAnalysis('')
      return
    }

    const allLinear = constraintList.every(c => c.isValid)
    
    if (allLinear) {
      setIsConvex(true)
      setAnalysis('All constraints are linear, forming a convex set.')
    } else {
      setIsConvex(false)
      setAnalysis('Some constraints are non-linear or invalid.')
    }
  }

  // ... rest of component
}
Lines: 51TypeScript React