File size: 5,653 Bytes
c49667f
6c13437
b16cdfc
1599566
 
 
fe0557b
 
6c13437
1599566
 
6c13437
1599566
 
 
 
6c13437
 
1599566
6c13437
 
 
 
 
 
1599566
6c13437
 
1599566
b16cdfc
6c13437
d8c6327
 
54f380d
 
 
46ee226
6c13437
 
 
 
 
1599566
6c13437
1599566
6c13437
1599566
46ee226
6c13437
 
 
fe0557b
 
 
 
 
6c13437
 
54f380d
6c13437
1599566
6c13437
 
 
1599566
46ee226
6c13437
 
 
 
 
 
 
1599566
6c13437
 
 
 
1599566
46ee226
6c13437
 
 
 
 
 
 
1599566
6c13437
 
 
1599566
 
6c13437
 
 
 
 
d8c6327
6c13437
 
 
 
d8c6327
6c13437
 
 
54f380d
6c13437
 
 
 
 
 
46ee226
6c13437
46ee226
6c13437
 
 
 
 
 
 
 
 
 
46ee226
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import gradio as gr
from maths.arithmetic.arithmetic_interface import (
    add_interface, subtract_interface, multiply_interface, divide_interface,
    array_calc_interface, array_calc_vis_interface,
    gcd_interface, lcm_interface, is_prime_interface # Assuming these were added earlier from a subtask
)
from maths.algebra.algebra_interface import solve_linear_equation_interface
from maths.algebra.algebra_tabs import algebra_tab
from maths.geometry.trigonometry_interface import (
    trig_interface, inverse_trig_interface, solve_trig_equations_interface, trig_identities_interface # Assuming these
)
from maths.calculus.calculus_interface import (
    derivative_interface, integral_interface,
    limit_interface, taylor_series_interface, fourier_series_interface, # Assuming these
    partial_derivative_interface, multiple_integral_interface # Assuming these
)

from maths.matrices.matrices_interface import (
    matrix_add_interface, matrix_subtract_interface, matrix_multiply_interface,
    matrix_determinant_interface, matrix_inverse_interface
)

from maths.vectors.vectors_interface import (
    vector_add_interface, vector_subtract_interface,
    vector_dot_product_interface, vector_cross_product_interface
)

from maths.differential_equations.differential_equations_interface import (
    first_order_ode_interface, second_order_ode_interface
)
from maths.operations_research.operations_research_interface import (
    branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface
)
from maths.equations.equations_interface import (
    equations_app, solve_quadratic_interface # equations_app is the tabbed interface, solve_quadratic_interface for direct use
)

# Categorize interfaces by topics

arithmetic_interfaces_list = [
    add_interface, subtract_interface, multiply_interface,
    divide_interface, array_calc_interface, array_calc_vis_interface
]
arithmetic_tab_names = [
    "Addition", "Subtraction", "Multiplication", "Division",
    "Array Calculation", "Array Calculation Viz"
]

number_theory_interfaces_list = [gcd_interface, lcm_interface, is_prime_interface]
number_theory_tab_names = ["GCD", "LCM", "Prime Check"]

algebra_tab = gr.TabbedInterface(
    algebra_interfaces_list,
    algebra_tab_names,
    title="Algebra"
)

equations_interfaces_list = [
    solve_linear_equation_interface, solve_quadratic_interface, # keep direct quadratic solver for single tab
    solve_trig_equations_interface
]
equations_tab_names = [
    "Linear Equation Solver", "Quadratic Solver",
    "Trigonometric Equation Solver"
]

geometry_interfaces_list = [trig_interface, inverse_trig_interface, trig_identities_interface]
geometry_tab_names = ["Trig Functions", "Inverse Trig", "Trig Identities"]

calculus_interfaces_list = [
    derivative_interface, integral_interface, limit_interface,
    taylor_series_interface, fourier_series_interface,
    partial_derivative_interface, multiple_integral_interface
]
calculus_tab_names = [
    "Derivative", "Integral", "Limits",
    "Taylor Series", "Fourier Series",
    "Partial Derivatives", "Multiple Integrals"
]

differential_equations_interfaces_list = [first_order_ode_interface, second_order_ode_interface]
differential_equations_tab_names = ["First Order ODE", "Second Order ODE"]

matrices_interfaces_list = [
    matrix_add_interface, matrix_subtract_interface,
    matrix_multiply_interface, matrix_determinant_interface,
    matrix_inverse_interface
]
matrices_tab_names = [
    "Matrix Addition", "Matrix Subtraction", "Matrix Multiplication",
    "Matrix Determinant", "Matrix Inverse"
]

vectors_interfaces_list = [
    vector_add_interface, vector_subtract_interface,
    vector_dot_product_interface, vector_cross_product_interface
]
vectors_tab_names = ["Vector Addition", "Vector Subtraction", "Dot Product", "Cross Product"]

operations_research_interfaces_list = [
    branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface
]
operations_research_tab_names = ["Branch & Bound", "Dual Simplex", "Simplex Steps"]

# Create topic-based tabbed interfaces
arithmetic_tab = gr.TabbedInterface(arithmetic_interfaces_list, arithmetic_tab_names, title="Arithmetic")
number_theory_tab = gr.TabbedInterface(number_theory_interfaces_list, number_theory_tab_names, title="Number Theory")
equations_tab = equations_app  # Only include the composite equations_app in the equations tab to avoid duplicate Gradio blocks
geometry_tab = gr.TabbedInterface(geometry_interfaces_list, geometry_tab_names, title="Geometry")
calculus_tab = gr.TabbedInterface(calculus_interfaces_list, calculus_tab_names, title="Calculus")
differential_equations_tab = gr.TabbedInterface(differential_equations_interfaces_list, differential_equations_tab_names, title="Differential Equations")
matrices_tab = gr.TabbedInterface(matrices_interfaces_list, matrices_tab_names, title="Matrices")
vectors_tab = gr.TabbedInterface(vectors_interfaces_list, vectors_tab_names, title="Vectors")
operations_research_tab = gr.TabbedInterface(operations_research_interfaces_list, operations_research_tab_names, title="Operations Research")

# Main demo with topic tabs
demo = gr.TabbedInterface(
    [
        arithmetic_tab, number_theory_tab, algebra_tab,
        equations_tab, geometry_tab, calculus_tab, differential_equations_tab,
        matrices_tab, vectors_tab, operations_research_tab
    ],
    [
        "Arithmetic", "Number Theory", "Algebra",
        "Equations", "Geometry", "Calculus", "Differential Equations",
        "Matrices", "Vectors", "Operations Research"
    ]
)

# Launch the Gradio app
if __name__ == "__main__":
    demo.launch(mcp_server=True)